Bạn không thể ghi vào exports
sau khi bạn rời khỏi tệp. Bạn phải chặn. Để tránh bị chặn, tôi sẽ sử dụng tải tài nguyên một cách lười biếng.
var carCol;
var carEmitter = new require("events").EventEmitter;
exports.getCars = function(callback) {
// if no car collection then bind to event
if (carCol === undefined) {
carEmitter.on("cars-ready", function() {
callback(carCol);
});
} else {
// we have cars, send them back
callback(carCol);
}
}
db.collection("cars", function(err, col) {
// store cars
carCol = col;
// tell waiters that we have cars.
carEmitter.emit("cars-ready");
});
Sử dụng bộ phát sự kiện để mô phỏng tải chậm. Bạn có thể muốn tổng quát hóa thành LazyLoadedCollection
lớp / đối tượng để làm cho mã gọn gàng hơn / KHÔ hơn.