从 node.js 数据服务层模块检索数据?

Retrieving data from a node.js data service layer module?

我创建了一个模块,这个模块有一个从 mongodb 检索数据的函数,现在假设我有一个 returns 一个 JSON 对象的函数,我将要从另一个模块调用此函数。

DataServiceLayer.js:

function getData(id) {
     ...;
     return data;
}

App.js:

function retrieve(callback) {
     var fetchedData = callback;
     console.log(fetchedData);
}

retrieve(require('./DataServiceLayer')(id))

但是,我总是得到一个未定义的 fetchedData 变量,我猜这是因为 node.js 执行的异步过程,我怎样才能得到我的结果并将其打印出来?

谢谢

这样做怎么样

DataServiceLayer.js:

getData(id){........}
module.exports.getData = getData;

App.js

var getData = require('./DataServiceLayer.js').getData;
function retrive(id){
    return getData(id);
} 

嗯...提供的信息有限...我只能给你一个笼统的答案。

在data.js

// In general, yopu give callbacks to Async functions.
// In node callbacks have signature - callback( error, result )
function getData( id, callback ) {
    someAsyncGetDataFunction( {id : id}, callback );
}

module.exports = getData;

在App.js

var getDataFunc = require( './data' )

function retrieveAndLogToConsole( id ) {
    var myCallback = function( err, result ) {
        if ( err ) { console.log( "error" ); }
        else { console.log( result ); } 
    }

    getDataFunc( id, myCallback );
}