我正在尝试使用JS中的单例模式为MongoClient获得一个连接,但是不管我有多少实例,当它只应创建一个连接时,它会继续创建许多连接。
我尝试进行!MongoDB.connection,但是我不知道它的实际作用,如果您能解释一下,那将非常棒。
constructor() {
this.client = new MongoClient(URI, {
useNewUrlParser: true,
useUnifiedTopology: true
});
this.database = DB_NAME;
}
connect() {
if (!MongoDB.connection) {
MongoDB.connection = async () => {
try {
await this.client.connect();
console.log('[db] connected to the server');
} catch (err) {
console.log(err);
}
};
}
return MongoDB.connection();
}
}
无论我要执行多少实例和connect()方法的调用,它都只需要创建一个连接,并且如果我执行以下操作即可:
const a = new MongoDB();
a.connect();
const b = new MongoDB();
b.connect();
我在控制台中获得两个打开的连接和一些错误:
the options [servers] is not supported
the options [caseTranslate] is not supported
the options [dbName] is not supported
[db] connected to the server
[db] connected to the server