Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将回调函数传播到mongoose函数_Javascript_Node.js_Mongodb_Callback - Fatal编程技术网

Javascript 将回调函数传播到mongoose函数

Javascript 将回调函数传播到mongoose函数,javascript,node.js,mongodb,callback,Javascript,Node.js,Mongodb,Callback,上面是我试图执行的代码。问题是: 因为mongoose主题是异步的,所以我的函数在mongoose.find完成它的正常工作之前完成,也正因为如此,回调变量被清除,并且变得未定义 我要寻找的是一种将回调函数传播到mongoose.find函数的方法。大概是这样的: TopicStatistics.methods.createTopicStatistics = function(callback) { // do stuff Topic.find(

上面是我试图执行的代码。问题是:

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

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

    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 blob中使用它,并能够在mongoose blob中的操作结束时调用它。

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

Topic.find({} , function (err, resultList, mycallback);
您在Topic.com中使用的回调变量。查找对TopicStatistics.createTopicStatistics上设置的回调变量的引用。所以当你进去的时候

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

mycallback会消失,因为JavaScript不会检查参数计数。

您的第一次尝试应该在不将mycallback传递给Topic.find函数的情况下工作。如果回调未定义,则它必须未定义。例如,您没有将任何内容传递给TopicStatistics.CreateTopicStatistics您是对的,这是我错误传递的函数。我无法确切理解您的意思。你能举一个正确实施的例子吗?我同意上面的观点。我读错了,以为您在示例中定义了Topic.find,但现在我看到您在使用createTopicStatistics中的Topic.find。您可能会看到的其他一些内容是创建和保存mongoose模型之间的时间安排。为了给出更好的答案,我需要看更多的代码来理解这些计时。您可以尝试将“Topic”引用为此。模型“Topic”。参见猫鼬文档。在“实例方法”标题下有一个示例。
Topic.find({} , function (err, resultList, mycallback);