2

我在nodeJS中有一个带有回调的方法,我试图在外部函数中设置一个值,该值可以与在回调中传递给猫鼬调用的数据的结果一起返回:

'use strict';

var mongoose = require('mongoose')
    ,Alert = mongoose.model('Alert');

exports.getAllAlerts = function() {
    var result = [];
    Alert.find({}, function(err, alerts) {
        if(err) {
            console.log('exception while fetching alerts');
        }
        if(alerts) {
            result = alerts;
            console.log('result: ' + result);
        }
    });
    return result;
}

如何使用在猫鼬回调中返回的警报值设置 result[] 的值?

提前致谢

4

1 回答 1

4

最有可能find()异步运行,在这种情况下,您将始终返回一个空 Array,因为在您返回值时,它没有定义也没有分配。

您需要重写您的.getAllAlerts()方法,以便它允许自己的回调函数,例如

exports.getAllAlerts = function( cb ) {
    Alert.find({}, function(err, alerts) {
        if(err) {
            console.log('exception while fetching alerts');
        }

        if(alerts) {
            if( typeof cb === 'function' ) {
                cb( alert || [ ] );
            }
        }
    });
}

...你会以类似的方式使用它

YourModule.getAllAlerts(function( alerts ) {
    console.log( alerts );
});
于 2013-03-04T22:58:58.067 回答