Man*_*rio 5 atomic mongoose mongodb node.js
我需要增加 MongoDB 和 mongoose 中记录的 likes 字段,但我对这些操作的原子性有点“担心”,因为这应该是并发安全的:
Post.findById(id, function(err, post) {
post.update({$inc: {
likes: 1
}});
});
Run Code Online (Sandbox Code Playgroud)
与
Post.findById(id, function(err, post) {
post.likes++;
post.save()
});
Run Code Online (Sandbox Code Playgroud)
它们提供相同的安全结果吗?想想我什至必须减少记录的点赞数(例如,如果用户再次单击点赞按钮)
Post.findById(id, function(err, post) {
post.update({$inc: {
likes: -1
}});
});
Run Code Online (Sandbox Code Playgroud)
MongoDB$inc是单个文档中的原子操作(请参阅mongoDB 文档)。
在第二种情况下,该操作不是原子的,因为在保存模型时,可以发送另一个请求,并且加载的likes将具有先前的值。
| 归档时间: |
|
| 查看次数: |
2719 次 |
| 最近记录: |