Мне нравится синтаксис async await, и я часто его использую с mongoose.
Так что в моем проекте много:
const user = await User.findOne({
_id: req.params.id
})
Что работает так, как ожидалось. Тем не менее, в sonarqube, у меня есть эти ошибки:
Refactor this redundant 'await' on a non-promise.
И правило сонаркуба я:
Можно использовать await для значений, которые не являются Обещаниями, но это
бесполезный и вводящий в заблуждение. Смысл ожидания - приостановить выполнение до
асинхронный код Promise завершен. С чем
кроме Обещания ждать нечего.
Это правило поднимает проблему, когда ожидаемое значение гарантированно не является Обещанием.
Пример несовместимого кода
let x = 42;
await x; // Noncompliant
Совместимое решение
let x = new Promise(resolve => resolve(42));
await x;
let y = p ? 42 : new Promise(resolve => resolve(42));
await y;
Я использую Mongo 4.0 и Mongoose 5.3.1
Поскольку я могу использовать синтаксис .then
, .catch
, я подумал, что имею дело с обещанием, так как я могу это исправить?