2013-04-16 22 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