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;
}

mongoose コールバックで戻ってくるアラートの値で result[] の値を設定するにはどうすればよいですか?

前もって感謝します

4

1 に答える 1

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 );
});
于 2013-03-04T22:58:58.067 に答える