node.js mongodb-如何建立插入等待单元连接?

node.js mongodb-如何建立插入等待单元连接?,node.js,mongodb,asynchronous,Node.js,Mongodb,Asynchronous,使用node.js和MongoDB存储实时数据流。在我的程序中,由async:series驱动的DBSetUp()连接到MongoDB并完成初始设置。DBInsert()在初始设置完成后将数据插入集合。我将这些函数分开,因为将有许多DBInsert()调用。我不知道如何使DBInsert()等待DBSetUp()执行完成 似乎我可以在DBInsert()中使用async:series来保持循环,直到DBSetUp()执行完成后再插入。我不知道如何实施。有更好的主意吗?非常感谢你的想法 代码片段

使用node.js和MongoDB存储实时数据流。在我的程序中,由
async:series
驱动的DBSetUp()连接到MongoDB并完成初始设置。DBInsert()在初始设置完成后将数据插入集合。我将这些函数分开,因为将有许多DBInsert()调用。我不知道如何使DBInsert()等待DBSetUp()执行完成

似乎我可以在DBInsert()中使用
async:series
来保持循环,直到DBSetUp()执行完成后再插入。我不知道如何实施。有更好的主意吗?非常感谢你的想法

代码片段

var mongodb = require('mongodb');
MongoClient = mongodb.MongoClient;
var async = require('async');

...

// Connect to DB and get handle to collection using async:series
DBSetUp(); 

// Wait for DBSetup before inserting    
DBInsert(); 

....

在DBSetUp中异步系列的回调中,可以调用DBInsert

async.series(tasks, function(err, results) { DBInsert(); });
创建一个存储到客户端的连接的变量和一个通过回调返回连接mongo连接的函数。如果定义了连接,它可以返回预缓存的连接。否则,它将调用DBSetUp,将连接保存到变量,然后包装器函数将通过回调返回连接。这样,您就可以使用相同的函数请求访问数据库,而无需知道连接是否存在

var conn = null
getDB = function(cb) {
  if(conn) 
    return cb(null, conn)
  else
    DBSetUp(cb);
}

解决了!在node.js google组上找到解决方案。下面是代码片段

function DBInsert()`
{
  async.series([
   function (callback) {
      //Check pre-conditons before insert
      ReadyNow("check", function (err) {
          callback();
      });
    },
   function (callback) {
      // Insert
      callback();
    }  
}

Function ReadyNow(something,callback)
{
   setTimeout(function () {
    // check pre-conditions  
    if (#pre-conditions#)  {        
        callback(); 
    }
    else 
    {
   setTimeout(arguments.callee, 20);
    }   
   }, 20);  
}

是的,如果我有所有的数据要插入,那就行了。因为我正在存储实时流数据,所以我正在寻找一个健壮的解决方案。好吧,我刚刚添加了另一个建议,很抱歉,这是一个黑客解决方案。