从 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 );
}
我创建了一个模块,这个模块有一个从 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 );
}