Похоже, здесь есть некоторая путаница относительно использования await
здесь.
Мой ответ на этот понедельник goose вопрос может помочь вам понять, как await
, Promises и обратные вызовы в стиле Node работают вместе.
Проблема
findOne
- это асинхронная функция.
Есть 3 способа получить уведомление о готовности вернуть значение: 1. Возьмите возвращаемое обещание и используйте .then()
Follow.findOne({})
.then(data => {doSomething()});
Дайте
findOne
обратный вызов
Follow.findOne({}, (err, data) => {doSomething()});
Используйте
.exec()
. это работает как один из двух описанных выше случаев
Вы также можете использовать await
с формой Promise вместо .then()
, например,
await Follow.findOne({});
doSomething();
Проблема в том, что что вы оба передаете обратный вызов и также await
результат.
Решение
Не передавать обратные вызовы .exec()
var following = await Follow.findOne({
user: indentity_user_id,
followed: user_id
}).exec();
var followed = await Follow.findOne({
user: user_id,
followed: indentity_user_id
}).exec();