Saya menggunakan luwak dalam naskah yang tidak dimaksudkan untuk berjalan terus-menerus, dan saya menghadapi apa yang tampaknya menjadi masalah yang sangat sederhana namun saya tidak dapat menemukan jawaban; cukup masukkan begitu saya melakukan panggilan ke fungsi luwak mana pun yang mengirim permintaan ke simpulong misalnya tidak pernah berhenti dan saya harus membunuhnya secara manual dengan, katakanlah, Ctrl + c atau Program.exit ().
Kira-kira kode ini terlihat seperti ini:
var mongoose = require('mongoose');
// if my program ends after this line, it shuts down as expected, my guess is that the connection is not really done here but only on the first real request ?
mongoose.connect('mongodb://localhost:27017/somedb');
// define some models
// if I include this line for example, node never stop afterwards
var MyModel = mongoose.model('MyModel', MySchema);
Saya mencoba menambahkan panggilan ke mongoose.disconnect () tetapi tidak ada hasilnya. Selain itu, semuanya berfungsi dengan baik (menemukan, menyimpan, ...).
Ini adalah masalah yang sama persis dengan orang ini, sayangnya dia tidak menerima jawaban apa pun: https://groups.google.com/group/mongoose-orm/browse_thread/thread/c72cc1c51c76e661
Terima kasih
EDIT: menerima jawaban di bawah karena secara teknis sudah benar, tetapi jika ada yang pernah mengenai masalah ini lagi, sepertinya luwak dan / atau driver mongodb tidak benar-benar menutup koneksi ketika Anda menanyakannya jika masih ada pertanyaan yang berjalan.
Bahkan tidak ingat panggilan putuskan sama sekali, itu tidak melakukannya setelah permintaan selesai berjalan; itu hanya membuang panggilan Anda tanpa terkecuali atau semacamnya, dan tidak pernah benar-benar menutup koneksi.
Jadi begitulah: pastikan bahwa setiap permintaan telah diproses sebelum memanggil putuskan sambungan () jika Anda ingin benar-benar berfungsi.
Jawaban:
Anda dapat menutup koneksi dengan
sumber
Connection.close()
metode hanya diekspor, hanya tersedia, jadi gunakan itu.Jawaban lain tidak berhasil untuk saya. Saya harus menggunakan
mongoose.disconnect();
sebagaimana dinyatakan dalam jawaban ini .sumber
Anda dapat mengatur koneksi ke variabel kemudian memutuskan itu ketika Anda selesai:
sumber
Saya menggunakan versi 4.4.2 dan tidak ada jawaban lain yang berfungsi untuk saya. Namun menambahkan
useMongoClient
opsi dan memasukkannya ke dalam variabel yang Anda panggilclose
tampaknya berhasil.sumber
Anda akan mendapatkan kesalahan jika Anda mencoba untuk menutup / memutuskan sambungan di luar metode. Solusi terbaik adalah dengan menutup koneksi di kedua panggilan balik dalam metode ini. Kode boneka di sini.
sumber
Seperti yang dikatakan Jake Wilson: Anda dapat mengatur koneksi ke suatu variabel kemudian memutuskannya ketika Anda selesai:
atau jika di dalam fungsi Async:
kalau tidak, ketika saya memeriksa di lingkungan saya ada kesalahan.
sumber
Mungkin Anda memiliki ini:
tetapi Anda juga dapat memiliki sesuatu seperti ini:
Anda tidak dapat menelepon
db.disconnect()
tetapi Anda dapat menutup koneksi setelah menggunakannya.sumber