Node.js 使用mongoose更新mongodb中的文档应该使用哪种方法?
我有两种方法通过在post模式中插入用户对象来更新LIKES数组。两种方法都很好,但我想知道哪种方法更好,为什么。我也在我的应用程序中使用mongoose “我的帖子”架构中的密钥对:Node.js 使用mongoose更新mongodb中的文档应该使用哪种方法?,node.js,mongoose,Node.js,Mongoose,我有两种方法通过在post模式中插入用户对象来更新LIKES数组。两种方法都很好,但我想知道哪种方法更好,为什么。我也在我的应用程序中使用mongoose “我的帖子”架构中的密钥对: likes:[{ user:{ type: Schema.Types.ObjectId, refPath:'onModel' } }] 第一种方法是使用$push操作符 Post.update({ _id: req.params.postid,
likes:[{
user:{
type: Schema.Types.ObjectId,
refPath:'onModel'
}
}]
第一种方法是使用$push操作符
Post.update({
_id: req.params.postid,
'likes.user': {
$ne:
authorizedData.jwt_payload.patient._id
}
},
{ $push: { likes: { user: authorizedData.jwt_payload.patient._id } } })
.then(post => res.json(post))
.catch(err => res.json(err))
第二种方法是使用mongoose保存方法
Post.findById(req.params.postid)
.then(post => {
if (
post.likes.filter(like => like.user.toString() === authorizedData.jwt_payload.patient._id)
.length > 0
) {
return res
.status(400)
.json({ alreadyliked: 'User already liked this post' });
}
// Add user id to likes array
post.likes.unshift({ user: authorizedData.jwt_payload.patient._id });
post.save().then(post => res.json(post));
})
.catch(err => res.status(404).json({ postnotfound: 'No post found' }));
第一种方法是使用$push操作符,这更有效,因为您让数据库完成所有工作&您不必将Post加载到内存中