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

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

При переходе на страницу должен возвращаться массив пользователей, но приходит 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';
  });
};


Спасибо!
  • Вопрос задан
  • 175 просмотров
Подписаться 2 Средний 1 комментарий
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Академия Эдюсон
    Fullstack-разработчик на JavaScript + ИИ
    11 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Инженер по тестированию + ИИ
    6 месяцев
    Далее
Решения вопроса 2
@Jumandjilos
попробуй return new Promise в начале писать
Ответ написан
Комментировать
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);
      };
    });
  });
};
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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