Mongoose不从集合中删除对象

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

Pet*_*ons 5

您需要使用回调来获取串行操作.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)

随意抛出一些错误处理.