2013-04-16 84 views
1

我无法找到解决这个简单问题的解决方案:我想调用从外部.js导出的函数并保存输出。我已经做了以下内容:从导出的函数回调中读取结果

db.js

function findMessages() { 
    allMsg = mongoose.model('allMsg'); 
    allMsg.find(function (err, message) { 
     console.log('here is ok'); 
     return message; 
    }); 
}; 

exports.returnMessages = findMessages; 

app.js

var db = require('./db'); 

app.get('/message', function(req, res){ 
    var messages = db.returnMessages(); 
    console.log('Nothing here (undefined): ' + messages); 
}); 

我怎么能读app.js消息? 谢谢。

回答

2

简单的回答:你不能。这不是回调的工作方式。

您需要更改findMessages()以接受回调函数。

function findMessages (callback) { 
    allMsg = mongoose.model('allMsg'); 
    allMsg.find(function (err, message) { 
     callback(message) 
    }); 
}; 

// app.js 
app.get('/message', function(req, res) { 
    db.returnMessages(function(messages) { 
     console.log(messages); 
    }); 
}); 
+0

您还应该在findMessages()函数本身或通过将其传入回调中来处理find()函数中的潜在错误。 – matthewtole

+0

没错,我只是将回调直接传递给'find'。 – ThiefMaster

+0

你(显然)是正确的。谢谢。 – goliardico