使用mongodb-native删除所有文档

时间:2013-05-26 06:27:43

标签: node.js mongodb node-mongodb-native

这是我的代码:

var environment = "ClientUnitTests";

//set up mongodb
var Db = require('mongodb').Db,
    MongoClient = require('mongodb').MongoClient,
    Server = require('mongodb').Server,
    ReplSetServers = require('mongodb').ReplSetServers,
    ObjectID = require('mongodb').ObjectID,
    Binary = require('mongodb').Binary,
    GridStore = require('mongodb').GridStore,
    Grid = require('mongodb').Grid,
    Code = require('mongodb').Code,
    BSON = require('mongodb').pure().BSON,
    assert = require('assert');

var db = new Db('test',new Server('localhost',27017),{safe:true});
db.open(function(err, db) {
    assert.equal(null, err);
});
var users = db.collection("users");

//Clean up data in test database for clientUnit tests
if (environment == "ClientUnitTests") {
    users.remove({},function(err,numberRemoved){
       console.log("inside remove call back" + numberRemoved);
    });
}

基本上,当应用程序在“ClientUnitTests”模式下启动时,我正在尝试删除用户集合中的所有数据。不幸的是,console.log语句永远不会触发(也通过在那里设置一个永不触发的断点来验证)。

删除此馆藏中的所有文件我做错了什么?

1 个答案:

答案 0 :(得分:3)

(doh moment)

Node是一个异步环境。这意味着当我尝试调用remove时数据库连接没有打开,也是我的其余请求工作的原因(它们在几秒到几分钟之后而不是毫秒)。

为了完整性,这里有一个利用回调来确保根据我的环境变量进行删除的示例:

db.open(function(err, db) {
    assert.equal(null, err);
    if (environment == "ClientUnitTests") {
        db.collection("users").remove({},function(err,numberRemoved){
            console.log("inside remove call back" + numberRemoved);
        });
    }
});