我有以下函数,用于向两个用户之间的私人房间添加评论。
saveComment: async function(comment) {
const id1 = comment.sender + comment.receiver;
const id2 = comment.receiver + comment.sender;
await Room.updateOne({
$or: [{
roomId: 'njnj' //should be id1
}, {
roomId: 'sadas' //should be id2
}],
$push: {
comments: comment
}
}).catch((err) => {
console.log(err);
});
}
问题是updateOne方法总是更新集合中的第一个文档(Room)即使我在查询中设置了随机id,也没有匹配。我认为问题是我没有正确使用$或操作符,但我无法找到任何错误。
如有任何帮助,不胜感激。
有一个问题,您已将查询和更新部分合并在同一个括号中,以纠正它,
await Room.updateOne(
{
$or: [
{ roomId: 'njnj' }, //should be id1
{ roomId: 'sadas' } //should be id2
]
}
{
$push: { comments: comment }
}
).catch((err) => { console.log(err); });