在哪里放回调?

时间:2016-02-18 13:34:25

标签: javascript node.js mongodb

db.listCollections().toArray(function(err, collections){
    for(i = 1; i < collections.length; i++){
        if(i < parseInt(collections.length)){
                   var collect = db.collection(collections[i].name.toString(),function(){
                    collect.count(function(err,result){
                      console.log(collections[i].name.toString());
                        corrCount = corrCount + result;
                    });
                });
            }else{
                collect = collections[i].name;
        }
    }
});

所以我的问题是collect最终未定义,因此无法计算集合中的条目数量。有些东西告诉我,我应该用回调来解决这个问题,但我一直都在失败。此外,我不明白为什么控制台会在错误发生之前打印出2次。我将nodejs与mongodb本机驱动程序一起使用。

1 个答案:

答案 0 :(得分:0)

您需要将其余代码移出回调,如下所示:

db.listCollections().toArray(function(err, collections) {
    for (i = 1; i < collections.length; i++) {
        if (i < parseInt(collections.length)) {
            var collect = db.collection(collections[i].name.toString());
            collect.count(function(err, result) {
                console.log(collections[i].name.toString());
                corrCount = corrCount + result;
            });
        } else {
            collect = collections[i].name;
        }
    }
});