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