Откуда вы получаете свою коллекцию пользователей?
И после правильного получения коллекции пользователей вы можете обещать все ваши вызовы БД.
Вы можете использовать Promise.all, чтобы разрешить все сразу
const [user1, user2] = await Promise.all([users.findOne({name: 'user1'}), users.findOne({name: 'user2'})]);
Это разрешит оба обещания одновременно.
Редактировать после обновления кода 1
вы можете использовать {upsert: true}
const user = await users.findOneAndUpdate({name: 'foo'}, {name: 'foo'}, {upsert: true})
И так как ваш следующий () является асинхронным вызовом вашего кодаобязательно перееду, чтобы окончательно заблокировать.
const express = require('express');
const { MongoClient } = require('mongodb');
let router = express.Router();
router.use(async (req, res, next) => {
try {
req.client = await MongoClient.connect(process.env.MONGODB_URI);
next();
} catch (err) {
next(err);
}
});
router.get('/', async (req, res, next) => {
let user = await users.findOne({ name: 'foo' });
if (!user) {
user = { name: 'foo' };
await users.insert(user);
}
res.json(user);
next();
});
router.use(async (req, res, next) => {
try {
req.client && req.client.close();
} catch (err) {
next(err);
}
})
module.exports = router;