dicem
@dicem

Как корректно обрабатывать запросы к MongoDB в Express?

Здравствуйте, встал вопрос касаемо лучших практик в стеке mongodb + express, а именно, каким образом обрабатывать запись, чтение итд.
Посмотрел get started у mongodb и написал следующие методы:
module.exports = {
    async create (client, data, entity) {
        try {
            await client.connect()
            await client.db('game').collection(entity).insertOne(data)
        } finally {
            await client.close
        }
    },
    async get (client, entity) {
        try {
            await client.connect()
            const cursor = await client.db('game').collection(entity).find({})
            return cursor.toArray()
        } finally {
            await client.close
        }
    },
    async update (client, entity, data, id) {
        try {
            await client.connect()

            const result = await client.db('game').collection(entity).updateOne(
                { id: id },
                { $set: data },
                err => {
                    if (err) console.log(err)
                }
            )

            console.log(result)
        } finally {
            await client.close
        }
    },
    async delete (client, id, entity) {
        try {
            await client.connect()
            const result = await client.db('game').collection(entity).deleteOne({ '_id': ObjectId(id) })
            return result
        } finally {
            await client.close
        }
    }
}


Видно, что на для каждого get / post / put / delete мы коннектимся к БД и по окончанию закрываем подключение. Однако с таким подходом, израсходовать квоту в 500 подключений в день будет очень просто, даже на дорогих тарифах, которые дают 3000 подключений в день, при 10-30 юзеров у приложения этих квот будет не достаточно даже для дня пользования БД.
Поэтому вопрос, правильный ли это подход? Или же есть вариант подключиться один раз и использовать это подключение в дальнейшем для всех операций над БД? и как это организовать в коде в таком случае?
  • Вопрос задан
  • 23 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы