異なる情報を含む 2 つのパネルを表示するダッシュボード ビュー ( dashboard.jade ) があります。すべての情報はデータベースから取得してビューに送信する必要があります。
2 つのアクションが定義されたルート ファイル ( 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;
}
});
};
これらの関数は、データベースからデータを取得するためだけに使用されます。
ここで、ダッシュボード ビューをレンダリングする exports.index 関数の下にある、dashboard.js ルート ファイルからダッシュボード ビューにそのデータを送信したいと思います。
問題は、db 呼び出しが非同期になるため、ビューを呼び出す前にデータにアクセスできないことです。
すべてのデータベース呼び出しを単純に実行し、コールバックを介してすべてのデータを一度にビューに配信するアクションを持つことができると思いますが、それではデータ取得アクションが再利用できなくなります。
この問題に正しく取り組む方法について本当に混乱しています。おそらく、この非同期のことをすべて間違っているのでしょう。誰かがこれを適切に行う方法についてのヒントを教えてもらえますか?