Я разрабатываю приложение node.js и передаю mongoDB в функции, поэтому модульное тестирование проще, поскольку я могу имитировать свою производственную mongoDB с помощью тестовой базы данных mongoDB. Однако я не уверен, что делаю это правильно, так как думаю, что могу создать несколько экземпляров клиента;
//db.js
import mongodb from 'mongodb';
export default async function makeDb() {
const { MongoClient } = mongodb;
const url = process.env.DB_URL;
const client = new MongoClient(url,
{
useNewUrlParser: true,
useUnifiedTopology: true,
});
await client.connect();
const db = await client.db('myDB');
return db;
}
, а затем я импортирую функцию makeDB и передаю ее в несколько dbHandler;
//authHandler.js
import makeDB from './db'
export default function dbMethods({ makeDB }) {
const signup = async (username, password) => {
const db = await makeDB();
const result = await db
.collection('users')
.insertOne({ username, password });
return result;
};
// other methods that also use const db = await makeDB();
return Object.freeze({
signup,
// other methods
});
}
Помимо authHandler, в моем приложении есть и другие обработчики, которые используют ту же технику .
Создаю ли я десятки экземпляров клиента mongoDB каждый раз, когда делаю const db = makeDB () ? Если да, есть ли лучший способ сделать это