Ze *_*ibe 0 mongoose mongodb node.js
猫鼬表现出一种奇怪的行为.以下代码行首先完全删除一个集合,然后创建一个新对象,最后再次删除该集合.
Model.remove().exec();
var obj = new Model({ name: 'my object' });
obj.save();
Model.remove().exec();
Run Code Online (Sandbox Code Playgroud)
虽然第一次删除工作(每次我启动程序,集合被清空),第二次没有效果(当我查询集合时,对象仍然存在).我无法理解这里发生了什么.
环境:Node.js v0.8.20,MongoDB v1.2.14和Mongoose v3.6.0
您需要使用回调来获取串行操作.node.js中的所有I/O都是异步的.这意味着你.save()的速度可能比.remove().exec()第二次.remove().exec()完成慢,然后保存.您需要使用回调函数来进行正确的流量控制.深度嵌套的回调(AKA回调地狱)方式看起来像这样,但使用更多命名函数或像async.js这样的流控制库将解决这个问题.
Model.remove().exec(function (error) {
var obj = new Model({ name: 'my object' });
obj.save(function (error) {
Model.remove().exec();
});
});
Run Code Online (Sandbox Code Playgroud)
随意抛出一些错误处理.
| 归档时间: |
|
| 查看次数: |
2090 次 |
| 最近记录: |