Bạn nên tạo kết nối một lần và sử dụng nó trong tất cả các trình xử lý.
Ngay bây giờ, những gì bạn đang làm là kết nối lại với cơ sở dữ liệu theo từng yêu cầu, ngay cả với những yêu cầu hoàn toàn không sử dụng cơ sở dữ liệu. Ngoài ra, bạn đang gọi next () trước khi chờ kết nối được thiết lập.
Các kết nối cơ sở dữ liệu có nghĩa là phải liên tục - không phải chỉ diễn ra một lần, vì vậy bạn có thể nhận được hiệu suất rất kém với cách tiếp cận của mình và tôi thậm chí không chắc tại sao bạn lại muốn làm điều đó. Bạn có gặp sự cố nào với một kết nối duy nhất không? Tôi không nghĩ rằng việc đập vào cơ sở dữ liệu của bạn như vậy sẽ giúp ích được gì. Nếu bất cứ điều gì, nó chỉ có thể làm cho mọi thứ tồi tệ hơn.
Khi bạn kết nối với Mongo bằng Trình điều khiển MongoDB Node.js gốc có một số tùy chọn mà bạn có thể sử dụng, như:
-
poolSize
- Đặt poolSize tối đa cho từng máy chủ riêng lẻ hoặc kết nối proxy (mặc định là5
) -
autoReconnect
- Kết nối lại khi bị lỗi (mặc định làtrue
)
Một số tùy chọn thú vị khác là:reconnectTries
, reconnectInterval
, keepAlive
, connectTimeoutMS
, socketTimeoutMS
.
Bạn có thể thay đổi giá trị của các tùy chọn đó nếu bạn không hài lòng với các giá trị mặc định.
Để biết thêm thông tin, hãy xem:
- Kết nối thất bại và thử lại
- MongoClient hoặc cách kết nối mới và tốt hơn cách
- Hướng dẫn / Kết nối với MongoDB
- Tham chiếu / Tùy chọn kết nối / Cài đặt kết nối
- Câu hỏi về trình điều khiển node.js mongo tự động kết nối lại (danh sách gửi thư)