Tôi đang sử dụng cầy mangut trong một kịch bản không có nghĩa là chạy liên tục và tôi đang đối mặt với vấn đề dường như rất đơn giản nhưng tôi không thể tìm thấy câu trả lời; chỉ cần đặt một khi tôi thực hiện cuộc gọi đến bất kỳ hàm mongoose nào gửi yêu cầu đến mongodb, thể hiện nodejs của tôi không bao giờ dừng và tôi phải giết nó bằng tay, giả sử, Ctrl + c hoặc Program.exit ().
Mã trông gần giống như thế này:
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);
Tôi đã thử thêm các cuộc gọi vào mongoose.disconnect () nhưng không có kết quả. Bên cạnh đó, mọi thứ đều hoạt động tốt (tìm kiếm, tiết kiệm, ...).
Đây là vấn đề chính xác giống như người này, thật đáng buồn khi anh ta không nhận được bất kỳ câu trả lời nào: https://groups.google.com/group/mongoose-orm/browse_thread/thread/c72cc1c51c76e661
Cảm ơn
EDIT: chấp nhận câu trả lời dưới đây vì nó đúng về mặt kỹ thuật, nhưng nếu bất cứ ai gặp phải vấn đề này một lần nữa, có vẻ như trình điều khiển mongoose và / hoặc trình điều khiển mongodb không thực sự đóng kết nối khi bạn hỏi nó nếu vẫn còn truy vấn.
Nó thậm chí không nhớ cuộc gọi ngắt kết nối, nó không thực hiện khi truy vấn kết thúc; nó chỉ loại bỏ cuộc gọi của bạn mà không có ngoại lệ bị ném hoặc bất cứ thứ gì tương tự, và không bao giờ thực sự đóng kết nối.
Vì vậy, bạn có nó: đảm bảo rằng mọi truy vấn đã được xử lý trước khi gọi disconnect () nếu bạn muốn nó thực sự hoạt động.