Tôi đã cố gắng để ngắt kết nối mongoose sau khi kết thúc công việc cơ sở dữ liệu, nhưng dường như nó đã không làm việcMongoose ngắt kết nối không hoạt động
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/myDatabase');
var MyModel = mongoose.model('MyModel', MySchema);
//do something here
mongoose.disconnect();
Thời gian tất cả mọi thứ đầu tiên hoạt động tốt, nhưng khi chạy các mã cho lần thứ hai, tôi nhận được lỗi "Đang cố gắng để mở kết nối không rõ ràng". Tôi cũng đã thử mongoose.connection.close(); và có cùng kết quả.
Có ai vui lòng giúp tôi với điều này không?
Cảm ơn bạn rất nhiều!
Gary
Tôi nghĩ rằng tôi đã hiểu điều này.
Trong mã của tôi, tôi đã cố gắng làm điều gì đó với mô hình của tôi với cơ sở dữ liệu:
var mongoose = require ('cầy mangut');
mongoose.connect('mongodb://localhost:27017/myDatabase');
var MyModel = mongoose.model('MyModel', MySchema);
MyModel.findOne({}, function() {...});
mongoose.disconnect();
Xem sự cố? Do tính năng không chặn của Nodejs, "ngắt kết nối" đã được thực thi trước khi "findOne" được hoàn thành, do đó tất nhiên nó không hoạt động!
Giải pháp là để đưa ngắt kết nối vào hàm callback:
MyModel.findOne({}, function() {
...
mongoose.disconnect();
});
Kể từ khi bạn đã tìm thấy giải pháp của bạn, bạn nên đăng Là câu trả lời dưới đây thay vì chỉnh sửa mô tả câu hỏi. – Stennie
Trên thực tế, vì giải pháp này trông giống như nó đến từ câu trả lời của lancerex, bạn nên chấp nhận/upvote câu trả lời đó. –
Gary, bạn nên đánh dấu một trong các câu trả lời là chính xác. – agm1984