Mongodb,查找集合是否为空,node.js

时间:2013-05-24 21:13:12

标签: node.js mongodb

我是node.js和heroku的新手,我构建了一个使用node.js并从mongodb实例中检索一些数据的小应用程序。我设置了整个问题,但我的问题是我认为mongodb的一个简单的语法问题。

我需要知道启动应用程序我的收藏中是否包含任何内容,如果没有,则初始化它。我尝试调用collection.count()但返回undefined。

我试过这个

mongo.connect(mongoUri, {}, function(err, database) {
  if(!err) {
      db = database;
      console.log("Connected to 'testdb' database, HERE");
      db.collection('tests', {safe:true}, function(err, collection) {
          if (err) {
              console.log("The 'tests' collection doesn't exist. Creating it ");
              populateDB();//This would work for the first time I install the app on heroku
          }
          else { //Collection exists, but nothing is in it, this is where I am lost
             console.log("now I am HERE");
             //I do not know how to mimic this piece of code
             //if((collection("tests").find().toArray.size() == 0 or empty or the equivalent of it) {
             //    populateDB();
             //}
             console.log((collection("tests").find().toArray.size()));
          }
      });
  }
  else {
      console.log("COULD NOT CONNECT TO MONGO: " + mongoUri);
  }
});

感谢任何帮助。

1 个答案:

答案 0 :(得分:7)

任何访问数据库中数据的MongoDB驱动程序方法(如counttoArray)都会通过回调函数参数异步地向调用者提供结果,而不是通过返回值将它们的结果提供给调用者不要阻塞单个node.js线程。

所以支票会是这样的:

collection.count(function (err, count) {
    if (!err && count === 0) {
        populateDB();
    }
});