Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Merangkai Janji Dengan Betul dalam Node.js Apabila Bekerja dengan Pertanyaan Pangkalan Data?

Bagaimanakah Saya Boleh Merangkai Janji Dengan Betul dalam Node.js Apabila Bekerja dengan Pertanyaan Pangkalan Data?

Mary-Kate Olsen
Lepaskan: 2024-11-14 09:30:02
asal
330 orang telah melayarinya

How Can I Chain Promises Correctly in Node.js When Working with Database Queries?

Isu Janji dan Sambungan

Dalam kod Node.js ini, janji dijangka menunggu untuk selesainya fungsi findUser, yang ia tidak. Isu ini berpunca daripada pelaksanaan tak segerak pertanyaan pangkalan data.

Fungsi Panggilan Balik Sambungan

Dalam findUser, sambungan ke pangkalan data diwujudkan menggunakan pool.getConnection. Fungsi ini mengambil fungsi panggil balik sebagai hujah, yang dipanggil apabila sambungan sudah sedia. Walau bagaimanapun, kod tersebut salah mengembalikan data dalam panggilan balik ini, menyebabkan tidak ditentukan dikembalikan sebelum pertanyaan selesai.

Untuk menangani perkara ini, fungsi findUser harus menghantar panggilan balik ke pool.getConnection yang menyelesaikan atau menolak janji, menunjukkan sama ada pertanyaan itu berjaya atau tidak.

Merangkai Janji

Penggunaan janji membolehkan kod dilaksanakan secara berurutan. Dalam kod yang disediakan, janji pertama hendaklah dirantai ke janji seterusnya menggunakan kemudian dan bukannya fungsi panggil balik, seperti yang ditunjukkan di bawah:

promise.then(function(rows) {
    return new Promise(function (resolve, reject) {
        loginC.doSomething(data);

        if (success) {
            resolve(data);
        } else {
            reject(reason);
        }
    });
}, function(reason) {
    console.log("error handler second");
});
Salin selepas log masuk

Pengendalian Ralat

The sebab mesej "pengendali ralat kedua" dikeluarkan adalah kerana ralat berlaku apabila sambungan pangkalan data gagal. Pengendalian ralat dalam pendengar acara connection.on('error') tidak digunakan dengan betul. Ralat ini merebak ke fungsi findUser dan ditangkap oleh pengendali ralat kedua dalam rantaian.

Fungsi findUser harus menolak janji dengan mesej ralat, yang kemudiannya akan disebarkan kepada pengendali ralat dalam rantai janji .

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Merangkai Janji Dengan Betul dalam Node.js Apabila Bekerja dengan Pertanyaan Pangkalan Data?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan