Я пытаюсь сделать наиболее эффективный способ написания настройки соединения mongodb для приложения js на основе экспресс-узла.
Я создал класс, который заботится о настройке соединения следующим образом:
class queryToDB {
async makeDBCall(queryHandler) {
let resultSet;
await MongoClient.connect(config.mongodburl, (err, client) => {
if(err) throw Error("Database connection cannot be established.");
resultSet = queryHandler(client.db("dbname"));
client.close();
});
return resultSet
}
};
export default new queryToDB();
После каждого запроса я закрываю соединение с MongoClient
.Это рекомендуемый способ сделать это?
Во-вторых, я передаю соединение для обратного вызова как queryHandler
.Функция queryHandler
будет выглядеть примерно так:
export const getCall = (id, handler) => {
return connection => {
connection.collection('some_schema').findOne({"_id": getObjectId(id)}, (err, result) => {
if(err) throw new Error(err);
handler(result);
});
}
};
Я передаю результат обратно в обработчик, который, в свою очередь, передается обратно клиенту с сервера.Это эффективный способ создания соединений и обработки результатов?До сих пор я не проводил никакого нагрузочного тестирования по этому вопросу, но хочу быть уверен, что есть какие-либо проблемы с этим подходом к обработке запросов и приведению к mongodb.Мне также известно, что я использую пару обратных вызовов для достижения этой цели, поэтому я хочу больше узнать о производительности этого подхода.Я не хочу использовать Mongoose
для этой работы.Я ищу просто реализовать это с MongoClient
.Любые отзывы приветствуются.Спасибо.