NodeJS поведение при импорте - PullRequest
0 голосов
/ 06 марта 2020

У меня есть модуль 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...