所以我正在尝试将用户添加到 likes 数组,目前我无法这样做,因为我找不到如何获取事件评论的方法,findone 失败,并且我使用 findone 获取捕获错误功能(on event.评论),尝试过映射,但由于模式看起来像那样(见下文)我有点困惑。
事件模型
creator: {
type: Schema.Types.ObjectId,
ref: 'User'
},
comments: [
{
user: {
type: Schema.Types.ObjectId,
ref: 'User'
},
text: {
type: String,
required: true
},
likes: [
{
user: {
type: Schema.Types.ObjectId,
ref: 'User'
}
}
]
}
]
}
我当前的功能:
commentLike: async (req, res) => {
Events.findById(req.params.idas)
.then((event) => {
event.comments.findById(req.params.commentID) //this fails maybe since its not schema model anymore?
.then((comment) => {
if (comment.likes.filter((like) => { return like.user.toString() === req.params.id; }).length > 0) {
return res.status(400).json({ alreadyliked: 'already liked' });
}
event.comment.likes.unshift({ user: req.params.id });
return event.save().then((resevent) => { return res.json(resevent); });
});
})
.catch((err) => {
res.status(404).json({ nopostfound: 'No commnet found' });
});
}
我传递了三个参数 id-这是用户ID idas - 这是事件 ID commentID - 评论编号
最佳答案
你可以试试这个
Events.findOneAndUpdate(
{ _id: req.params.idas, comments: { $elemMatch: { user: req.params.commentID } } },
{ $push: { "comments.$.likes": { user: req.params.id } } }
)
关于javascript - mongodb在事件评论中将用户添加到喜欢的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51464648/