为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

BIG阳 2019-04-17 13:15:26
现在,当我想将对象添加到数据库时,我执行以下操作: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。
查看完整描述

3 回答

?
慕容3067478

TA贡献1773条经验 获得超3个赞

我已经可以看到你正在使用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) => { ... })


查看完整回答
反对 回复 2019-05-17
?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

是的,我们有es6传播功能来执行此操作。请检查此链接

注意:内部的所有值req.body都将被传递

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


查看完整回答
反对 回复 2019-05-17
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

如果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的答案中做一些修改来做到这一点。


查看完整回答
反对 回复 2019-05-17
  • 3 回答
  • 0 关注
  • 598 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信