k88*_*074 6 atomicity mongoose node.js
考虑一个架构:
var userSchema = mongoose.Schema({
...
followers: [{ type: mongoose.Schema.Types.ObjectId, ref: 'User' }],
following: [{ type: mongoose.Schema.Types.ObjectId, ref: 'User' }]
...
}
Run Code Online (Sandbox Code Playgroud)
当userA下面userB,userB是被推动userA.following而userA在被推动userB.followers.这两项操作都需要.save().
什么是好方法 - 也许是概念性的 - 确保如果其中一个.save()失败,两个文件都保持不变?
我原来是按照@BatScream在第一条评论中建议的那样做的。我重组了数据的架构并删除了列表followers。
在阅读了很多有关该主题的内容之后,我得出的拙劣结论是,尽管可以执行跨mongoDB / Mongoose.js中的多个文档的事务,但这并不是最安全的做法。在实施两阶段提交时,回滚操作本身可能会失败。
如果需要对多个文档进行原子操作,则MongoDB可能不是正确的工具。但是,少量的数据重组/重组可能有时会使多文档事务变得不必要。
| 归档时间: |
|
| 查看次数: |
2090 次 |
| 最近记录: |