我有一个在nodeJS内部带回调的方法,我正在尝试在外部函数中设置一个值,该值可以返回,并将回调中传递的数据结果返回到mongoose调用:
'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 []的值?
提前致谢
答案 0 :(得分:4)
最有可能的是,find()
异步运行,在这种情况下,您将始终返回空数组,因为在您返回值时,它未定义也未分配。
您需要重写.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 );
});