【问题标题】:NodeJS / Express / MongoDB - How Do I Limit Accepted Parameters in a POST Request?NodeJS / Express / MongoDB - 如何限制 POST 请求中接受的参数?
【发布时间】:2014-09-24 19:38:09
【问题描述】:

我有一个在 Express 上运行的 NodeJS 服务器。我正在使用 MongoSkin 将我的 Web 服务器连接到 MongoDB。我有以下路线:

var express = require('express');
var router = express.Router();

router.post('/add', function(req, res){
    var db = req.db;
    db.collection('products').insert(req.body, function(err){
        res.send(err);
    });
});

module.exports = router; 

上面创建了一个端点,它将接受http://domain.com/add 的 POST 请求。现在,此端点将保存 AJAX 请求中包含的所有参数。我无法控制要保存在数据库中的键/值对。

使用 PHP,您必须在脚本中显式查找参数才能使用它们,即:

$param1 = $.POST['param1'];
$param2 = $.POST['param2'];
$param3 = $.POST['param3'];  
// Do something with these values

我将如何使用 NodeJS 做到这一点?

【问题讨论】:

    标签: node.js express mongoskin


    【解决方案1】:

    req.body只是一个普通的js对象,所以应该和PHP一模一样。假设您的发布请求具有以下值:param1=1,param2=2,param3=invalid。那么req.body就会有如下形式:

    {
        param1: 1,
        param2: 2,
        param3: "invalid"    
    }
    

    所以你只需用你想要的值创建一个新对象:

    var allowed_params = {
        param1: req.body.param1, // Or if you prefer req.body["param1"]
        param2: req.body.param2
    };
    db.collection('products').insert(allowed_params, callback_func);
    

    【讨论】:

    • 我如何允许这种格式的多个参数?
    • @LloydBanks 与答案完全相同,req.body 就像 PHP $_POST 变量。
    • @LloydBanks 如果这回答了您的问题,请将其标记为已解决。
    猜你喜欢
    • 2019-07-21
    • 1970-01-01
    • 2022-01-13
    • 2017-07-14
    • 2019-06-26
    • 2019-08-16
    • 2017-04-01
    • 2014-06-08
    • 2020-12-14
    相关资源
    最近更新 更多