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

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


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

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

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