Здравствуйте, встал вопрос касаемо лучших практик в стеке 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 юзеров у приложения этих квот будет не достаточно даже для дня пользования БД.
Поэтому вопрос, правильный ли это подход? Или же есть вариант подключиться один раз и использовать это подключение в дальнейшем для всех операций над БД? и как это организовать в коде в таком случае?