Nodejs / Express / Mongodb - Как мне ограничить принятые параметры в почтовый запрос?

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

  •  02-01-2020
  •  | 
  •  

Вопрос

У меня есть сервер 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);
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top