将回调函数传播给mongoose函数

时间:2014-11-01 00:48:28

标签: javascript node.js mongodb callback

    TopicStatistics.methods.createTopicStatistics = function(callback)
    {
        // do stuff

        Topic.find({} , function (err, resultList)
        {
             if(err)
             {
                 // do stuff
                 if(typeof callback === "function")
                    callback(err); // callback undefined
             }
             else
             {
                 // do stuff
                 if(typeof callback === "function")
                    callback(null); // callback undefined
             }

        });
    };

以上是我要执行的代码。问题是:

由于mongoose主题是异步的,我的函数在mongoose.find完成其正常工作之前完成,并且因此回调变量被清除并且它变得未定义。

我正在寻找的是一种将回调函数传播到mongoose.find函数的方法。像这样:

Topic.find({} , function (err, resultList, mycallback);

这将使我能够在我的mongoose blob中使用它,并且能够在mongoose blob内的操作结束时调用它。

1 个答案:

答案 0 :(得分:3)

我认为您需要在主题范围内定义的另一个回调。

Topic.find({} , function (err, resultList, callback)
    {

"回调"变量你在Topic.find()内部使用回到TopicStatistics.createTopicStatistics()上的一个变量。所以当你输入

Topic.find({} , function (err, resultList, mycallback);

" mycallback"由于JavaScript没有检查参数计数,因此消失了。