首页 > web前端 > js教程 > 如何在 JavaScript 循环中从多个数据库查询返回数据?

如何在 JavaScript 循环中从多个数据库查询返回数据?

DDD
发布: 2024-11-14 22:19:02
原创
356 人浏览过

How can I return data from multiple database queries within a loop in JavaScript?

循环中多个数据库查询返回数据的问题

在循环中执行多个数据库查询时,处理异步操作至关重要正确地确保在将数据返回给您的客户端之前检索所有数据。

在提供的代码中, getPrayerInCat 函数使用 forEach 回调执行多个 MongoDB 查询。但是,代码会立即返回 undefined,因为该函数不会等待所有数据库查询的结果完成。

要解决此问题,我们在使用 Promise 时必须遵循以下原则:

  1. 每个异步函数都必须返回一个 Promise。
  2. 为不返回 Promise 的函数创建包装器以实现它们Promise 兼容。
  3. 与异步结果交互的所有内容都应该进入 .then 回调。

使用这些原则,我们可以创建一个 getPrayerCount 函数的版本,该函数返回Promise:

function getPrayerCount(data2) {
    var id = data2.id;
    return find({prayerCat:id})
    .then(function(prayer) {
        if (!prayer)
            data2.prayersCount = 0;
        else
            data2.prayersCount = prayer.length;
        return data2;
    });
}
登录后复制

要处理多个异步任务并等待它们完成,我们可以使用Q.all:

function getPrayerInCat(data) {
    var promises = data.map(getPrayerCount); // don't use forEach
    return Q.all(promises);
}
登录后复制

通过从 getPrayerInCat 函数返回一个 Promise,我们可以等待所有查询完成后再返回结果。

以上是如何在 JavaScript 循环中从多个数据库查询返回数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板