2013-08-17 2 views
0

В следующем коде:async.parallel на MongoDB и Node.js

var collection = db.collection('colname'); 
    async.parallel([ 
     function(callback(){collection.find({category:'a'}).sort({rank:1}).toArray(callback)}, 
     function(callback(){collection.find({category:'b'}).sort({rank:1}).toArray(callback)} 
    ], function(err, result){ 
     if (err) throw err; 
     console.log('a'); 
     concole.log(result); 
     console.log('b'); 
    }); 

Если я запускаю приведенный выше код, который находится внутри MongoClient.connect функции, кстати, я a на экране, но не сделал получите b. Таким образом, похоже, что console.log(result) останавливает запуск кода. Как я могу исправить и запустить запрос параллельно?

Спасибо.

ответ

-1

Существует много очевидных синтаксических ошибок, но кроме этого код кажется мне хорошим. Я не использовал используемый драйвер mongo напрямую, поэтому я не могу быть абсолютно уверен.

Я использую мангуст, поэтому я перевел ваш код для работы с мангустом, и я мог заставить его работать. Также модель категории, которую я использовал, относится к одному из моих проектов, поэтому она немного отличается от того, что вы опубликовали. Вот мой код:

(function() { 
var mongoose = require('mongoose'), db, async = require('async'); 
mongoose.connect('mongodb://127.0.0.1/test'); 
db = mongoose.connection; 
db.once('open', function callback() { 
    var collection = require('../src/db').Category; 
    async.parallel([ 
    function(callback) { 
     collection.find({ 
      categoryType : 1 
     }).sort({ 
      categoryName : 1 
     }).exec(callback); 
    }, 
    function(callback) { 
     collection.find({ 
      category : 2 
     }).sort({ 
      categoryName : 1 
     }).exec(callback); 
    }], function(err, result) { 
     if (err) 
      throw err; 
     console.log('a'); 
     console.log(result); 
     console.log('b'); 
    }); 
}); 
}()); 

Надеется, что это полезно для вас.

+0

Что такое «много очевидных синтаксических ошибок»? Вы имеете в виду, что я не включал коды, требующие импорта или подключения модуля? Затем я исключил их, чтобы легко сосредоточиться на той части, которая вызывает проблему. Кроме того, у меня нет никаких знаний в мангусте вообще, поэтому мне пришлось бы потратить огромное время, чтобы понять ваш код ... Поэтому я не мог ответить много сейчас ... – Blaszard

+0

Нет нет импорта или connect, но есть и другие ошибки. как callback, не должно быть 'function (callback() {})' it должно быть 'function (callback) {}'. А что касается мангуста, я не знаю точно, сколько разницы в драйвере mongodb и mongoose, так что я извиняюсь за это. – RohanJ

Смежные вопросы