0

在以下代码中:

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)停止运行代码。如何修复它并并行运行查询?

谢谢。

4

1 回答 1

0

有许多明显的语法错误,但除此之外,代码对我来说似乎很好。我没有直接使用过使用过的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');
    });
});
}());

希望这对你有用。

于 2013-08-17T11:10:20.333 回答