Có vấn đề bạn đang gặp phải đến từ dòng này:
await client.close();
Từ tài liệu:
Có nghĩa là khi bạn close
ứng dụng khách, bất kỳ kết nối đang mở nào khác cũng đóng lại. Trong trường hợp # 2 và # 4 của bạn bắt đầu chạy ngay sau # 1 và # 3 (nhưng trước khi chúng hoàn tất) và bạn đóng kết nối trên chúng khi chúng vẫn đang chạy.
Cũng từ tài liệu:
Cách tốt nhất là có một số quản lý trạng thái cho các chức năng không trạng thái của bạn (tôi biết), có một dịch vụ kết nối chỉ cung cấp cho các chức năng không trạng thái của bạn kết nối, việc quản lý lỗi theo cách này cũng sẽ dễ dàng hơn.
Đọc thêm về điều này tại đây và trong tài liệu trình điều khiển nodejs
Một giải pháp nhanh chóng (và rất tối ưu) cho vấn đề của bạn sẽ là xác định kết nối trong hàm như sau:
// remove the definition from here
export default async (req, res) => {
// and move it here
const client = new MongoClient(process.env.DB_URI, {});
await client.connect();
.....
await client.close();
};