在使用 mongoose 完成两个异步查询后进行回调

Posted

技术标签:

【中文标题】在使用 mongoose 完成两个异步查询后进行回调【英文标题】:Having a callback after two asynchronous queries have completed using mongoose 【发布时间】:2011-05-13 05:26:17 【问题描述】:

使用猫鼬,我希望在完成 2 个不同的查询后进行回调。

var team = Team.find(name: 'myteam'); var games = Game.find(visitor: 'myteam');

那么假设我希望这些请求非阻塞并异步执行,那么如何在 Promise 中链接和/或包装这两个请求?

我想避免以下阻塞代码:

team.first(函数(t) 游戏.所有(功能(g) // 用 t 和 g 做一些事情 ); );

【问题讨论】:

【参考方案1】:

我认为您已经找到了解决方案,但无论如何。您可以轻松使用async 库。在这种情况下,您的代码将如下所示:

async.parallel(
    
        team: function(callback)
            Team.find(name: 'myteam', function (err, docs) 
                callback(err, docs);
            );
        ,
        games: function(callback)
            Games.find(visitor: 'myteam', function (err, docs) 
                callback(err, docs);
            );
        ,                    
    , 
    function(e, r)
        // can use r.team and r.games as you wish
    
);

【讨论】:

【参考方案2】:

我想你想看看类似的东西

https://github.com/creationix/step

【讨论】:

以上是关于在使用 mongoose 完成两个异步查询后进行回调的主要内容,如果未能解决你的问题,请参考以下文章

在任何传入的回调完成后是不是会发生 Mongoose 查询 `then` 调用?

使 mongoose.js 查询同步运行

使 mongoose.js 查询同步运行

Mongoose 使用异步迭代器流式传输聚合查询

Mongoose 阻止节点脚本结束

Mongoose 阻止节点脚本结束