猿问

将req.body属性映射到对象键

现在,当我想将对象添加到数据库时,我执行以下操作:

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以便这些属性可以映射到对象的键?或者其他一些方法,我可以简化它并减少代码。

我正在使用sequelize ORM。


BIG阳
浏览 599回答 3
3回答

慕容3067478

我已经可以看到你正在使用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] })但IF req.body具有与targetObject中相同的键,那么您可以这样做return BSRequest.create(req.body)    .then((bsRequest) => { ... })    .catch((error) => { ... })

呼啦一阵风

是的,我们有es6传播功能来执行此操作。请检查此链接注意:内部的所有值req.body都将被传递return BSRequest.create({...req.body}).then(bsRequest => res.status(201).send(bsRequest)).catch(error => res.status(400).send(error));

吃鸡游戏

如果req.body和你的数据库db模型键是相同的,你可以写return BSRequest.create(req.body).then(bsRequest => res.status(201).send(bsRequest)) .catch(error => res.status(400).send(error));评论:我不建议您将req.body中的值直接存储到数据库中。请在将type-check前端保存到数据库之前包含从前端获取的值。你可以通过在Akshay的答案中做一些修改来做到这一点。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答