猫鼬更新集合内嵌套对象数组中的对象
Mongoose update an object in a nested array of object inside a collection
我有这个代码:
const updateComment = async (req, res) => {
try {
const post = await Post.findById(req.body.postId);
const comment = post.comments.find(
(comment) => comment.id === req.body.commentId
);
res.status(200).json(comment);
} catch (err) {
console.log(err);
res.status(500).json(err);
}
};
由于我不能使用 mongoose find
或 findById
因为它不是一个集合,所以我使用 javascript find
方法来查找特定的评论,但是由于我不能也使用updateOne
,我该如何更新评论正文?
我试过这个:
comment.body = req.body.newCommentBody;
但是不行,如何改变数据库中的对象?
取决于您是否在所有数据库中使用唯一的 commentId(如 ObjectId)。然后你可以使用 updateOne 按评论 id 搜索并使用 positional operator $ 像这样:
await Post.updateOne(
{"comments.id" : req.body.commentId},
{"comments.$.body": req.body.newCommentBody}
)
但是这样你就不会收到要发送的评论。
您还可以找到 post,就地更新并发送回 db:
const post = await Post.findById(req.body.postId)
const comment = post.comments.find(
(comment) => comment.id === req.body.commentId
);
comment.body = req.body.newCommentBody
await post.save()
res.status(200).json(comment);
我不确定 .findById() returns 数组还是单个文档,如果数组你必须添加 [0]
当然。
我有这个代码:
const updateComment = async (req, res) => {
try {
const post = await Post.findById(req.body.postId);
const comment = post.comments.find(
(comment) => comment.id === req.body.commentId
);
res.status(200).json(comment);
} catch (err) {
console.log(err);
res.status(500).json(err);
}
};
由于我不能使用 mongoose find
或 findById
因为它不是一个集合,所以我使用 javascript find
方法来查找特定的评论,但是由于我不能也使用updateOne
,我该如何更新评论正文?
我试过这个:
comment.body = req.body.newCommentBody;
但是不行,如何改变数据库中的对象?
取决于您是否在所有数据库中使用唯一的 commentId(如 ObjectId)。然后你可以使用 updateOne 按评论 id 搜索并使用 positional operator $ 像这样:
await Post.updateOne(
{"comments.id" : req.body.commentId},
{"comments.$.body": req.body.newCommentBody}
)
但是这样你就不会收到要发送的评论。 您还可以找到 post,就地更新并发送回 db:
const post = await Post.findById(req.body.postId)
const comment = post.comments.find(
(comment) => comment.id === req.body.commentId
);
comment.body = req.body.newCommentBody
await post.save()
res.status(200).json(comment);
我不确定 .findById() returns 数组还是单个文档,如果数组你必须添加 [0]
当然。