Когда рекомендуется закрывать соединение mongodb в экспресс-приложении nodejs? - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь сделать наиболее эффективный способ написания настройки соединения 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.Любые отзывы приветствуются.Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...