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

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


Спасибо!
  • Вопрос задан
  • 164 просмотра
Решения вопроса 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);
      };
    });
  });
};
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
summer Ярославль
от 100 000 до 140 000 ₽
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
19 апр. 2024, в 20:43
20000 руб./за проект
19 апр. 2024, в 20:11
500 руб./за проект