NodeJS / Express / MongoDB - Wie beschränke ich akzeptierte Parameter in einer POST-Anfrage?
Frage
Ich habe einen NodeJS-Server, der auf Express ausgeführt wird.Ich verwende MongoSkin, um meinen Webserver mit MongoDB zu verbinden.Ich habe folgende Route:
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;
Das obige erstellt einen Endpunkt, der POST-Anforderungen unter akzeptiert http://domain.com/add
.Im Moment speichert dieser Endpunkt alle Parameter, die in einer AJAX-Anforderung enthalten sind.Ich habe keine Kontrolle darüber, welche Schlüssel / Wert-Paare ich in meiner Datenbank speichern möchte.
Mit PHP müssten Sie explizit nach Parametern in Ihrem Skript suchen, um sie zu verwenden, dh:
$param1 = $.POST['param1'];
$param2 = $.POST['param2'];
$param3 = $.POST['param3'];
// Do something with these values
Wie würde ich das mit NodeJS machen?
Lösung
req.body
ist nur ein gewöhnliches js-Objekt, also sollte es genau das gleiche wie PHP sein.Angenommen, Ihre Post-Anfrage hat die folgenden Werte: param1=1,param2=2,param3=invalid
.Dann req.body
wird die folgende Form haben:
{
param1: 1,
param2: 2,
param3: "invalid"
}
Sie müssen also nur ein neues Objekt mit den gewünschten Werten erstellen:
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);