Nodejs / Express / MongoDB - Come limiti i parametri accettati in una richiesta post?
Domanda
Ho un server Nodejs in esecuzione su Express.Sto usando Mongoskin per connettere il mio server Web a MongoDB.Ho il seguente percorso:
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;
.
Quanto sopra crea un endpoint che accetterà le richieste di post su http://domain.com/add
.In questo momento, questo endpoint salverà qualsiasi parametro incluso con una richiesta AJAX.Non ho alcun controllo per limitare quali coppie chiave / valore che voglio salvare nel mio db.
Con PHP, dovresti cercare esplicitamente i parametri nello script per utilizzarli, ovvero:
$param1 = $.POST['param1'];
$param2 = $.POST['param2'];
$param3 = $.POST['param3'];
// Do something with these values
.
Come farei questo con Nodejs?
Soluzione
req.body
è solo un normale oggetto JS, quindi dovrebbe essere esattamente lo stesso di PHP.Supponiamo che la tua richiesta postale abbia i seguenti valori: param1=1,param2=2,param3=invalid
.Quindi req.body
avrà il seguente modulo:
{
param1: 1,
param2: 2,
param3: "invalid"
}
.
Quindi devi solo creare un nuovo oggetto con i valori che desideri:
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);
.