我有一个仪表板视图 (dashboard.jade),它将显示两个具有不同信息的面板,所有这些信息都应该从数据库中检索,然后发送到视图。
假设我有一个定义了两个动作的路由文件( document.js ):
exports.getAllDocuments = function(req, res){
doc = db.model('documents', docSchema);
doc.find({}, function(err, documents) {
if (!err) {
// handle success
}
else {
throw err;
}
});
};
exports.getLatestDocumentTags = function(req, res){
tags = db.model('tags', tagSchema);
tags.find({}, function(err, docs) {
if (!err) {
// handle success
}
else {
throw err;
}
});
};
这些函数只能用于从数据库中检索数据。
现在我想从我的dashboard.js 路由文件中的exports.index 函数下将该数据发送到仪表板视图,我在其中呈现我的仪表板视图。
问题是,由于数据库调用将是异步的,因此在调用视图之前我无法访问数据。
我想我可以有一个动作,简单地完成我所有的数据库调用,并通过回调一次将所有数据传递到视图,但这会使我的数据检索动作不可重用。
我真的很困惑如何正确解决这个问题,可能我把这个异步的东西都弄错了。有人可以给我一些关于如何正确执行此操作的提示吗?