我有一个发布架构,里面有这样的数据
const PostSchema = new Schema({
post votes: {
upvotes: [{
votedby: {
type: Schema.Types.ObjectId,
ref: 'User',
},
votedtime: {
type: Date,
default: Date.now,
},
}],
downvotes: [{
votedby: {
type: Schema.Types.ObjectId,
ref: 'User',
},
votedtime: {
type: Date,
default: Date.now,
},
}],
},
... other data in it
})
仅当列表中不存在用户时,我才需要将他们添加到投票中。
我正在使用类似的方式来更新我的帖子,但是发生的是,即使该用户已经存在,该用户仍会添加到该列表中。
//if downvoted
const adduser = {
votedby: userid,
};
const sendPost = await Post.findByIdAndUpdate(postid,
{
$addToSet: { 'postvotes.downvotes': adduser },
$pull: { 'postvotes.upvotes': adduser },
}, { new: true })
此外,我希望每次都可以返回该帖子,无论投票是否更新。
谢谢