在以下代码中:
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)
停止运行代码。如何修复它并并行运行查询?
感谢。
答案 0 :(得分:-1)
有许多明显的语法错误,但除此之外,代码对我来说似乎很好。我没有直接使用过的mongo驱动程序,所以我不能完全确定。
我使用mongoose,所以我将你的代码翻译成mongoose,我可以让它工作。 我使用的类别模型也来自我的一个项目,所以它与你发布的有点不同。 这是我的代码:
( 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');
});
});
}());
希望这对你有用。