Nodejs / Express / Mongodb - Как мне ограничить принятые параметры в почтовый запрос?
Вопрос
У меня есть сервер Nodejs, работающий на Express.Я использую Mongoskin, чтобы подключить мой веб-сервер в 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
.Прямо сейчас эта конечная точка сохранит любые параметры, включенные в запрос AJAX.У меня нет контроля, чтобы ограничить, какие пары ключа / значения я хочу сохранить в моей БД.
с 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);
.