首页 > 解决方案 > 将 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以便将这些属性映射到对象的键?或者我可以简化它并减少代码的其他方式。

我正在使用续集 ORM。

标签: javascriptnode.jsexpressecmascript-6ecmascript-2016

解决方案


我可以看到您已经在使用 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] })

但是 IFreq.body具有与您在 targetObject 中想要的相同的键,那么您可以这样做

return BSRequest.create(req.body)
    .then((bsRequest) => { ... })
    .catch((error) => { ... })

推荐阅读