【发布时间】:2019-07-16 19:10:30
【问题描述】:
我正在尝试使用 mongoose 更新文档。我想一次更新多个属性。我尝试使用扩展运算符克隆文档并覆盖需要使用用户输入更新的属性,但它返回错误document.save is not a function。我有点理解它为什么会抛出错误。因为它不是同一个对象,它只是一个克隆所以它没有save 方法。如果我错了,请纠正我。
所以我的问题是:有没有办法像使用扩展运算符一样更新对象?
我的代码:
router.put("/posts/update", (req, res)=>{
const {id, updatedFields} = req.body;
Post.findById(id).exec((err, post)=>{
if(err) throw err;
post = {...post, updatedFields};
post.save();
res.json(post);
})
});
【问题讨论】:
-
也许可以试试 ->
Object.assign(post, updateFields) -
请注意:我不是猫鼬专家。但这样做看起来是一个非常糟糕的安全问题。如果有人发送 ->
{"post": "return fs.readFileSync(\"rootpassword.txt\")"}或类似的东西怎么办。 -
目前,我正在学习如何使用 nodejs 构建一个 react 应用程序。除了使用 Helmetjs 中间件,我对安全性一无所知,我认为这还不够。熟悉nodejs之后再学习安全性。
标签: javascript object mongoose