Banyak hal yang salah dengan ini. Konsep ini tidak akan berhasil.
Sebagai permulaan, while(true)
your Anda loop memblokir loop acara jadi db
tidak pernah bisa mendapatkan nilai sehingga loop Anda tidak pernah selesai.
Ketika operasi jaringan di koneksi selesai, itu akan menambahkan acara ke antrian acara dan panggilan balik yang terkait dengannya (dan kemudian janji yang diselesaikan) hanya dapat berjalan ketika Anda mengembalikan kontrol kembali ke loop acara sehingga acara dapat diproses.
Tapi, while(true)
your Anda loop memblokir loop acara sehingga tidak ada acara yang dapat diproses. Kecuali Anda menggunakan await
di dalam loop (yang memungkinkan event lain berjalan), Anda tidak bisa menggunakan loop tunggu seperti ini di node.js. Itu hanya membuat loop tak terbatas.
Sampai kita memiliki await
tingkat atas yang bekerja dengan inisialisasi modul (yang sedang dikerjakan), Anda tidak dapat langsung mengekspor nilai yang diperoleh secara asinkron.
Sebagai gantinya, Anda dapat mengekspor janji dan penelepon harus menggunakan janji untuk mendapatkan db. Atau ekspor fungsi yang mengembalikan janji.
Info lebih lanjut tentang masalah dengan loop sibuk-tunggu sementara dalam jawaban lain ini:
javascript - Apa yang salah dengan loop while ini? lingkaran tanpa akhir
Mengapa a while loop memblokir loop acara?