cari
Soal Jawab Dalam Firebase Cloud Functions, adakah mungkin untuk mengemas kini dokumen secara tidak segerak dengan selamat tanpa menunggu ia kembali?

0
<p>Dalam fail Firebase Cloud Function saya, saya mempunyai fungsi setempat berikut yang menjalankan operasi mendapatkan dan mengemas kini dokumen sebelum mengembalikan beberapa sifat. </p> <pre class="brush:php;toolbar:false;">fungsi async getRandomDocLessThanOperator(benih) { cuba { const db = admin.firestore(); syot kilat const = menunggu db.collection("pengguna").where("rawak", "<=", seed) .limit(1) .get(); jika (snapshot.kosong) { return null; // Pemanggil kemudian mencuba yang lebih besar daripada operator } const doc = snapshot.docs[0]; doc.ref.update({"random": seed}); // Kemas kini dengan seed baharu return doc.get("uid"); } tangkap (ralat) { buang Ralat(error) baru; } }</pre> <p>Fungsi ini berfungsi dengan baik, tetapi saya bimbang untuk cuba mengemas kini dokumen secara tidak segerak sebelum kembali. Walau bagaimanapun, dalam ujian, dokumentasi tidak pernah gagal dikemas kini. Walau bagaimanapun, adakah mungkin fungsi ini tamat sebelum kemas kini selesai? </p> <p>Bagaimanapun, untuk menyelesaikan masalah, saya cuba menggunakan <kod>menunggu</code> <pre class="brush:php;toolbar:false;">const doc = snapshot.docs[0]; tunggu doc.ref.update({"rawak": seed}); kembalikan doc.get("uid");</pre> <p>Walau bagaimanapun, apabila saya melakukan ini, fungsi mengembalikan rentetan yang dijangkakan tetapi tidak mengemas kini dokumen. </p> <ol> <li>Mengapakah penambahan <kod>menunggu</kod> sebelum operasi kemas kini menghalang kemas kini? </li> <li>Adakah selamat untuk tidak menunggu kemas kini dan melakukannya secara tidak segerak seperti dalam contoh pertama? </li> </ol><p><br /></p>
Your Answer
serahkan

1 jawapan
0

Tidak pasti mengapa kemas kini anda tidak berfungsi (mungkin anda boleh menggunakan lebih banyak pengelogan untuk mendapatkan gambaran yang lebih jelas tentang perkara yang berlaku semasa masa jalan). Tetapi apa yang boleh saya katakan dengan pasti ialah apabila menggunakan Cloud Functions anda mesti mengembalikan janji yang diselesaikan selepas semua kerja tak segerak selesai (atau tunggu setiap janji yang dihadapi oleh ), jika tidak, fungsi itu mungkin ditutup sebelum kerja sudah selesai . Ini adalah kesilapan biasa yang dilakukan oleh pembangun.

Tidak, ini tidak "selamat" kerana anda tidak mempunyai jaminan bahawa kod tak segerak akan terus berjalan selepas fungsi ditamatkan. Anda mesti mengembalikan janji yang diselesaikan hanya selepas semua kerja tak segerak selesai.

Sila baca dokumentasi tentang perkara ini.

2023-08-18 09:09:51

serahkan

Hot Tools

vc9-vc14 (32+64 bit) koleksi perpustakaan masa jalan (pautan di bawah)

vc9-vc14 (32+64 bit) koleksi perpustakaan masa jalan (pautan di bawah)

Muat turun koleksi perpustakaan runtime yang diperlukan untuk pemasangan phpStudy

VC9 32-bit

VC9 32-bit

VC9 32-bit phpstudy pustaka masa jalan persekitaran pemasangan bersepadu

Kotak alat pengaturcara PHP versi penuh

Kotak alat pengaturcara PHP versi penuh

Programmer Toolbox v1.0 PHP Persekitaran Bersepadu

VC11 32-bit

VC11 32-bit

VC11 32-bit phpstudy pustaka masa jalan persekitaran pemasangan bersepadu

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan