Сопоставление свойств req.body с ключом объекта - PullRequest
0 голосов
/ 16 мая 2019

Прямо сейчас, когда я хочу добавить объект в базу данных, я делаю следующее:

return BSRequest.create({
            salon_name: req.body.salon_name,
            salon_type: req.body.salon_type,
            employees: req.body.employees,
            postcode: req.body.postcode,
            city: req.body.city,
            website: req.body.website,
            first_name: req.body.first_name,
            last_name: req.body.last_name,
            email: req.body.email,
            phone_number: req.body.phone_number
        })
            .then(bsRequest => res.status(201).send(bsRequest))
            .catch(error => res.status(400).send(error));

Есть ли способ в Javascript / Node автоматически получить свойства req.body, чтобы их можно было сопоставить с ключом объекта? Или каким-то другим способом, которым я могу упростить это и иметь меньше кода.

Я использую секвелиз ORM.

Ответы [ 3 ]

1 голос
/ 16 мая 2019

Я вижу, что вы уже используете body-parser или какой-либо другой вид анализатора запросов (ЯВНО), так что вы можете просто написать однострочную утилиту для этого

## req.body = {a: 1, b:2, c:3, d:4}
let targetObj = {}
let keysYouWant = ['key1', 'key2']
Object.keys(req.body).forEach(key => { if (keysYouWant.includes(key)) targetObj[key] = req.body[key] })

Но если req.body имеет те же ключи, что вы хотите в targetObject, тогда вы можете просто сделать это

return BSRequest.create(req.body)
    .then((bsRequest) => { ... })
    .catch((error) => { ... })
1 голос
/ 16 мая 2019

если req.body и ключи вашей модели базы данных совпадают, вы можете просто написать

return BSRequest.create(req.body).then(bsRequest => res.status(201).send(bsRequest)) .catch(error => res.status(400).send(error));

Комментарий: я не буду рекомендовать вам напрямую сохранять значения в req.body в базе данных. Пожалуйста, включите type-check для значений, которые вы получаете из внешнего интерфейса, прежде чем сохранять их в базе данных. Вы можете сделать это, внеся некоторые изменения в ответ Акшая.

0 голосов
/ 16 мая 2019

Да, для этого у нас есть функция распространения es6. Пожалуйста, отметьте эту ссылку

Примечание: все значения внутри req.body будут переданы

return BSRequest.create({...req.body}).then(bsRequest => res.status(201).send(bsRequest)).catch(error => res.status(400).send(error));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...