У меня есть модуль js, например:
const mongoClient = require('mongodb').MongoClient;
exports.db;
exports.instance = new Date().toString();
exports.connect = (url) => {
return mongoClient.connect(url, {...}).then((client) => {
this.db = client.db();
})
};
Я импортировал его как:
mongo = require(path.join(__rel__, __shared__, "mongodao"));
и распечатал:
console.log("instance ====>>> " + mongo.instance);
В большинстве случаев дата экземпляра остается неизменной, но иногда она меняется. Насколько я понимаю, дата будет установлена, когда модуль сначала импортируется, а затем кэшируется. Как и во всем последующем импорте этого файла с одним и тем же именем, будет получен один и тот же экземпляр. В модифицированной версии, когда я обертываю его в класс и экспортирую все как один объект, это выглядит так. Есть несколько возможных объяснений, но я не могу найти ничего конкретного.
const mongoClient = require('mongodb').MongoClient;
class Mongodao {
constructor() {
this.instance = new Date().toString();
}
connect(url) {
return mongoClient.connect(url, {...}).then((client) => {
this.db = client.db();
})
}
module.exports = new Mongodao();
}