NodeJS / Express / MongoDB - 投稿要求で受け入れられたパラメータを制限するにはどうすればよいですか。
質問
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要求に含まれているパラメータを保存します。私のDBに保存したい鍵と値のペアを制限するためのコントロールはありません。
PHPでは、スクリプト内のパラメータを明示的に使用して使用する必要があります。
$param1 = $.POST['param1'];
$param2 = $.POST['param2'];
$param3 = $.POST['param3'];
// Do something with these values
.
NodeJSとどうしてこれをしますか?
解決
req.body
は普通のJSオブジェクトだけであるため、PHPとまったく同じである必要があります。POSTリクエストに次の値があるとします.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);
. 所属していません StackOverflow