首頁 > web前端 > js教程 > 主體

如何在 JavaScript 循環中從多個資料庫查詢傳回資料?

DDD
發布: 2024-11-14 22:19:02
原創
277 人瀏覽過

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 回呼。

利用這些原理,我們可以建立一個傳回Promise 的getPrayerCount 函數版本:

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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板