NodeJS / Express / MongoDB - 投稿要求で受け入れられたパラメータを制限するにはどうすればよいですか。

StackOverflow https://stackoverflow.com//questions/25082957

  •  02-01-2020
  •  | 
  •  

質問

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top