Задать вопрос

Почему не возвращается значение?

При переходе на страницу должен возвращаться массив пользователей, но приходит undefined, что говорит об отсутствии значения result, но если вызвать console.log(), то значение result есть. Не могу понять в чем подвох.

app.get('/users', (req, res) => {
  res.send(findOne() + "  one");
});

var findOne = (queryObj) => {
  let promise = new Promise((resolve, reject) => {
    db.collection('users').find(
      queryObj
    ).toArray((err, docs) => {
      if (!err) {
        resolve(docs);
      } else {
        reject();
      };
    })
  });
  promise.then(result => {
    return result;
  }, reject => {
    return 'error';
  });
};


Спасибо!
  • Вопрос задан
  • 171 просмотр
Подписаться 2 Средний 1 комментарий
Помогут разобраться в теме Все курсы
  • Skillbox
    JavaScript
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик расширенный
    13 месяцев
    Далее
  • Академия Eduson
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
Решения вопроса 1
@Jumandjilos
попробуй return new Promise в начале писать
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
amux
@amux
alp.ac
Потому что возващается значение стрелочной функции в промис, сама функция findOne ничего не возвращает.

Должно быть так:

app.get('/users', (req, res) => {
  findOne().then((result) => {
      res.send(result);
    })
    .catch((e) => {
      res.status(500, {
        error: e
      });
    });
});

const findOne = (queryObj) => {
  return new Promise((resolve, reject) => {
    db.collection('users').find(
      queryObj
    ).toArray((err, docs) => {
      if (!err) {
        resolve(docs);
      } else {
        reject(err);
      };
    });
  });
};
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы