2013-05-26 3 views
0

Вот мой код:Удаление всех документов с MongoDB-родной

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 никогда не срабатывает (также проверяется установкой там точки останова, которая никогда не срабатывает).

Что я делаю неправильно для удаления всех документов в этой коллекции?

ответ

2

(DOH момент)

узел является асинхронной среда. Это означает, что соединение с базой данных не открыто, когда я пытаюсь вызвать 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); 
     }); 
    } 
}); 
Смежные вопросы