这是我的代码:
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语句永远不会触发(也通过在那里设置一个永不触发的断点来验证)。
删除此馆藏中的所有文件我做错了什么?
答案 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);
});
}
});