如何解决这个表达式{item_1.name:req.body.item}或这个{[item_1.name]:req.body.item}是否有问题?
我正在尝试运行这段代码:
router.put('/restaurants/:id',async (req,res) => {
try {
const response = await Restaurant.findByIdAndUpdate(req.params.id,{name: req.body.name,item_1.name: req.body.item,item_2.name: req.body.item_2,item_3.name: req.body.item_3,item_4.name: req.body.item_4
})
res.send(response)
}
catch (error) {
res.send(error)
}
})
在这种情况下,我将项目(即item_1等)保存为数据库中的对象,项目具有两个属性名称和等级,当管理员想要编辑项目时,它只能编辑项目的name属性不是等级,因此要实现此目的,我想要执行的操作是,如此处所示,在编辑请求后,我只想将项目的name属性设置为与请求中发送的相同。 但这会给我一个打字稿错误(尽管我没有安装打字稿),说:
',' expected.ts(1005)
并且它在运行此代码之前发生,实际上vs代码显示此错误。 并在运行时显示如下内容:
E:\xord\second_assignment\node\routes\restaurants.js:50
item_1.name: req.body.item,^
SyntaxError: Unexpected token '.'
at wrapSafe (internal/modules/cjs/loader.js:1054:16)
at Module._compile (internal/modules/cjs/loader.js:1102:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)
at Module.load (internal/modules/cjs/loader.js:986:32)
at Function.Module._load (internal/modules/cjs/loader.js:879:14)
at Module.require (internal/modules/cjs/loader.js:1026:19)
at require (internal/modules/cjs/helpers.js:72:18)
at Object.<anonymous> (E:\xord\second_assignment\node\index.js:8:21)
at Module._compile (internal/modules/cjs/loader.js:1138:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)
at Module.load (internal/modules/cjs/loader.js:986:32)
at Function.Module._load (internal/modules/cjs/loader.js:879:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
at internal/main/run_main_module.js:17:47
[nodemon] app crashed - waiting for file changes before starting...
当我尝试使用方括号表示法访问对象属性时,同样的事情会发生不同的错误。
对于很长的查询我深表歉意,但我想知道。这段代码中用于在另一个对象内设置对象键值的语法是错误的吗?如果是这样,那为什么呢?还有什么替代方法可以做到这一点?
解决方法
感谢上帝!在猫鼬v5.10.19文档中,我看到了几乎相同的实例,在这里它们使用对象的属性作为另一个对象的键:
Parent.update({},{ 'child.name': 'Luke Skywalker' },(error) => {
// Error because parentSchema has `strict: throw`,even though
// `childSchema` has `strict: false`
});
据我了解,在这种情况下,应该像在“ child.name”中那样将密钥用引号引起来。这样就解决了我面临的问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。