NodeJS / Express / MongoDB - Como Faço para Limitar Parâmetros Aceitos em uma Solicitação POST?
Pergunta
Eu tenho um NodeJS server em execução no Express.Eu estou usando MongoSkin para se conectar a minha servidor web para o MongoDB.Eu tenho a seguinte rota:
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;
Acima cria um ponto de extremidade que vai aceitar solicitações POST no http://domain.com/add
.Agora, esse ponto de extremidade irá salvar todos os parâmetros incluídos com uma solicitação AJAX.Eu não tenho nenhum controle para limitar o que os pares chave / valor que eu quero guardar no meu DB.
Com o PHP, você teria explicitamente olhar para os parâmetros no seu script para usá-los, ou seja:
$param1 = $.POST['param1'];
$param2 = $.POST['param2'];
$param3 = $.POST['param3'];
// Do something with these values
Como eu iria fazer isso com NodeJS?
Solução
req.body
é normal apenas js objeto, portanto, deve ser exatamente o mesmo como o PHP.Suponha que o seu pedido post tem os seguintes valores: param1=1,param2=2,param3=invalid
.Em seguida, req.body
terá o seguinte formato:
{
param1: 1,
param2: 2,
param3: "invalid"
}
Então você acabou de criar um novo objeto com os valores que você deseja:
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);