Mongoデータからいくつかのデータを表示する必要があるサイトがあります。私の問題は、しかし、私は2つのコレクションからのデータが必要です。コレクションは完全に別物であり、お互いに関係がありません。ExpressとMongoDBで複数の別々のコレクションから取得する
は、今私は私のプロフィールページのための私のルートでこれを持っている:
router.get('/profile', function(req, res,next) {
var resultArray = [];
mongo.connect(url, function(err, db) {
var cursor = db.collection('users').find();
cursor.forEach(function(doc, err) {
resultArray.push(doc);
}, function() {
db.close();
res.render('profile/index', {users: resultArray});
});
});
});
そして、これは、もちろん、完全に正常に動作します。しかし、私はどのように私のテンプレートにも渡される2番目のdb.collection('colors').find();
を取得するのですか?
これは非常に面白く、間違いなくより適切な方法のようです。私はそれをショットを与えるよ! –
非同期メソッドをはるかに上手く処理するので、正しい方法です。もう一つの答えでは、 'resultsArray'が同期して生成されるので、間違った結果を得ることになります。はるかに優れたアプローチは、[** Promises **](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)を使用することです。非同期タスクを扱うことができます。異なるソリューションに頼る前に、誰でもそれらの使用を検討することをお勧めします。 – chridam
約束の一般的な概念は、将来の価値のためのコンテナであるということです。プロミスが値を受け取ると(解決される)、取り消されたとき(拒否された場合)、この値にアクセスするすべての「リスナー」に通知されます。 – chridam