NodeJS / Express / MongoDB - Como Faço para Limitar Parâmetros Aceitos em uma Solicitação POST?

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

  •  02-01-2020
  •  | 
  •  

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?

Foi útil?

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);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top