0

データベースから一意のIDを取得して、オブジェクト()に保存したいと思いますuserslist

オブジェクトにデータを取得できないのはなぜですか?オブジェクトuserslistが空です{}

私はNode.jsにこの関数を持っています:

getOnlineUsers: function()
    {
        var userslist = {};

        client.query(
            'SELECT DISTINCT Aid FROM online',
            function selectCb(err, results, fields) {
                if (err) {
                    throw err;
                }

                if (results.length > 0) {

                    for (var i = 0; i < results.length; i++) {
                        var reader = results[i];                        
                        userslist[reader['Aid']] = {
                            fbid: reader['Aid']
                        }
                    }       
                }
            }
            );
        return userslist; 
    }
4

1 に答える 1

1

上記のコメントで議論されたことの一例を次に示します。

にコールバックを渡しますgetOnlineUsers...

my_obj.getOnlineUsers(function(u_list) {

    /* do something with the user list */

});

そしてgetOnlineUsers、コールバック引数を受け取り、それを呼び出します...

// receive the callback----v
getOnlineUsers: function(cb_func) {

    client.query(
        'SELECT DISTINCT Aid FROM online',
         function selectCb(err, results, fields) {
            if (err) {
                throw err;
            }

            var userslist = {}

            if (results.length > 0) {

                for (var i = 0; i < results.length; i++) {
                    var reader = results[i];                        
                    userslist[reader['Aid']] = {
                        fbid: reader['Aid']
                    }
                }       
            }
            cb_func(userslist); // <-- invoke the callback, passing the data
        });
}

これは1つのアプローチですが、基本的には、に渡されるコールバックでコードフローの継続を実行する必要があることを示していますclient.query

于 2012-07-10T15:33:48.260 に答える