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

时间:2015-01-29 08:30:13

标签: node.js mongodb

我创建了一个模块,这个模块有一个从mongodb中检索数据的函数,现在假设我有一个返回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所做的异步过程,我怎样才能得到我的结果并将其打印出来?

由于

2 个答案:

答案 0 :(得分:0)

以这种方式做事

DataServiceLayer.js:

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

App.js

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

答案 1 :(得分:0)

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

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