NodeJS / Express / MongoDB - 如何限制POST请求中的接受参数?

时间:2014-08-01 14:53:52

标签: node.js express mongoskin

我在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执行此操作?

1 个答案:

答案 0 :(得分:4)

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);