سؤال

في الأساس ، أحاول معرفة طريقة للقيام بمجموعة من الاستعلامات في حلقة ثم القيام بشيء ما بمجرد الانتهاء من كل شيء.

حصلت عليه للعمل ، ولكن فقط لأنني استخدمت هذه المكتبة العظيمة التي يلتف كل من مونغودب مع الوعود.

var mongo = require('mongod') 
var db = mongo('mongodb://localhost/builder', ['block''])
var block_ids = ['538d097bbb12479d0e9f70ab', '538ddc7d06c1f0fe296178b1'];

var prom = null;
var blocks = [];
for (i in block_ids) {
    var block_id = block_ids[i];
    prom = db.block.findOne({_id:db.ObjectId(block_id)})
    .then(function(results) {
        blocks.push(results);
    })
}
prom.done(function() {
    console.dir(blocks)
    console.log("DONE! " + blocks.length)
})

سؤالي هو هذا.كيف على الأرض يمكنك أن تفعل شيئا مثل مع دون وعود??يبدو أنه سيكون من الصعب جدا!

هل كانت مفيدة؟

المحلول

غبي للحلقات

var mongo = require('mongod') 
var db = mongo('mongodb://localhost/builder', ['block''])
var block_ids = ['538d097bbb12479d0e9f70ab', '538ddc7d06c1f0fe296178b1'];


Q(block_ids.map(function(block_id) {
    return db.block.findOne({_id:db.ObjectId(block_id)});
})).all().done(function(blocks) {
    console.dir(blocks)
    console.log("DONE! " + blocks.length)
});

حصلت عليه للعمل ، ولكن فقط لأنني استخدمت هذه المكتبة العظيمة التي يلتف كل من مونغودب مع الوعود.

في بلوبيرد هل يمكن أن يكون مجرد القيام به promisifyAll(require("mongodb")) بدلا من الانتظار لشخص ما لجعل وحدة نمطية.

نصائح أخرى

يمكنك فقط استخدام متغير بسيط لحساب عدد الردود مثل ذلك:

giveacodicetagpre.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top