Вам нужно изменить withDB()
, чтобы он возвращал нужное вам значение:
const withDB = async (operations, res) => {
try {
const client = await MongoClient.connect('mongodb://localhost:27017', { useNewUrlParser: true });
const db = client.db('app');
let result = await operations(db);
client.close();
return result;
} catch (error) {
res.status(500).json({ message: 'Error connecting to db', error});
throw error;
}
}
В вашем обработчике catch()
вам также нужно сделать что-то, чтобы ваш вызывающий код мог различать guish путь ошибки, когда вы уже отправили ответ об ошибке в случае, когда вы решили со значением. Я не знаю точно, как вы хотите, чтобы это работало, но я вставил throw error
, чтобы он отклонил возвращенное обещание, и вызывающий абонент может увидеть это.
Из вашей обработки ошибок я заметил, что вы предполагаем, что все возможные ошибки вызваны ошибкой подключения к БД. Это не тот случай, здесь. Если operations(db)
отклоняет, это также поразит ваш catch
.