Есть вот такая абстракция на данный момент, хотелось бы без лишних параметров реализовать смену коллекций:
Кодexport class MongoDB {
private $client;
private $db;
constructor(
private serverUrl: string = `mongodb://${process.env.MONGO_IP}`,
private dbName: string = 'db'
) {
this.$client = new MongoClient('mongodb://' + serverUrl);
this.$db = this.$client.db(dbName);
}
protected insertMany() {
}
protected insertOne() {
}
protected findOne() {
}
protected find() {
}
protected setCollection(name: string) {
}
protected disconnect() {
}
protected connect() {
}
}
По идее, мы вызываем класс один раз и используем его для всех роутов или по одному на каждый.
У класса есть метод setCollection, допустим у нас будет поле $collection и по вызову метода, мы изменяем коллекцию на нужную нам, в этом случае корректная работа будет только у singleton экземпляров.
Как можно добиться смены коллекции без гонки для работы с одним экземпляром? Я посматриваю в сторону воркер тредов, но для http сервера это такое себе как по мне.