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 и иметь возможность называть его, когда закончились операции внутри moboose blob.
Я думаю, вам нужен еще один обратный вызов, определенный в области темы.
Topic.find({} , function (err, resultList, callback)
{
Переменная "callback", которую вы используете внутри Topic.find(), ссылается на тот, который установлен в TopicStatistics.createTopicStatistics(). Поэтому, когда вы входите
Topic.find({} , function (err, resultList, mycallback);
"mycallback" исчезает, поскольку JavaScript не проверяет количество параметров.
mycallback
вTopic.find
). Еслиcallback
неundefined
он должен бытьundefined
. Т.е. вы ничего не передаетеTopicStatistics.createTopicStatistics