Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Memastikan Pertanyaan Pangkalan Data Selesai Sebelum Mengembalikan Keputusan dalam Gelung dengan MongoDB dan Q Promises?

Bagaimana untuk Memastikan Pertanyaan Pangkalan Data Selesai Sebelum Mengembalikan Keputusan dalam Gelung dengan MongoDB dan Q Promises?

DDD
Lepaskan: 2024-11-10 17:34:03
asal
1016 orang telah melayarinya

How to Ensure Database Queries Finish Before Returning Results in a Loop with MongoDB and Q Promises?

Isu dalam Mengembalikan Keputusan Diperoleh daripada Pertanyaan Pangkalan Data Dibuat dalam Gelung

Dalam pertanyaan ini, matlamatnya adalah untuk membuat berbilang pertanyaan MongoDB dalam gelung dan hantar hasil gabungan sebagai tatasusunan data tunggal. Walau bagaimanapun, menggunakan pulangan dalam gelung tidak menunggu permintaan pangkalan data selesai, menghasilkan respons yang tidak ditentukan. Malah penggunaan Q.moulde tidak menyelesaikan isu.

Kod Diubah Suai:

var getPrayerInCat = function(data){
    var promises = data.map(function(data2){
        var id = data2.id;
        return Q.nbind(Prayer.find, Prayer)({prayerCat:id})
            .then(function(prayer) {
                if(!prayer) data2.prayersCount = 0;
                else data2.prayersCount = prayer.length;
                return data2;
            })
    });
    return Q.all(promises);
}
Salin selepas log masuk

Penjelasan:

  1. Q.nbind: Fungsi ini menukar kaedah Prayer.find menjadi fungsi yang mengembalikan janji Q.
  2. Janji Rantai: Setiap lelaran dalam gelung kini mengembalikan janji yang diselesaikan dengan objek data yang dikemas kini.
  3. Q .all: Fungsi ini menggabungkan semua janji menjadi satu janji yang diselesaikan dengan tatasusunan yang mengandungi semua objek data yang dikemas kini setelah semua pertanyaan pangkalan data mempunyai selesai.
  4. kembali Q.all(promises);: Baris ini memastikan fungsi menunggu semua pertanyaan pangkalan data selesai dan mengembalikan hasil gabungan.

Atas ialah kandungan terperinci Bagaimana untuk Memastikan Pertanyaan Pangkalan Data Selesai Sebelum Mengembalikan Keputusan dalam Gelung dengan MongoDB dan Q Promises?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan