2013-08-17 58 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

沒有進口或連接功能,但還有其他錯誤。像回調不應該像'function(callback(){})'它應該是'function(callback){}'。至於貓鼬,我不知道在mongodb驅動程序和貓鼬中究竟有多少差異,所以我對此表示歉意。 – RohanJ