Получение нулевых данных при использовании обещания в экспрессе

Поэтому у меня есть проект, в котором я получаю доступ к таблице БД по идентификатору или имени.

Маршрут моей категории:

 router.get('/name/:name', function(req, res) {
   Category.fetchName(res, req.params.name);
   console.log(res.name);

 });

Моя категория модели:

static fetchName(res, categoryName) {
  categories.find({
      name: categoryName
    })
    .then((doc) => {
      res.send(doc);
      console.log(doc);

    });
}

Когда я делаю console.log(doc) это распечатывает массив

[ { _id: 57f7d8382604126103f0113b, name: 'stuff' } ]

Но когда я получаю к нему доступ в моем маршруте, он говорит undefined, Что мне не хватает? Почему я не могу получить доступ к данным, полученным из БД в моем маршруте?

Заранее спасибо!

1 ответ

Вы не получите res.name так как вы никуда не добавляете name property в res объект.

router.get('/name/:name', function(req, res) {
  Category.fetchName(res, req.params.name, function(err, result) {
    if (!err) {
      console.log(result);
       res.send(result);
    }
  });
});


static fetchName(res, categoryName,callback) {
  categories.find({
      name: categoryName
    })
    .then((doc) => {
      callback(null,doc);
      console.log(doc);
    });
}
Другие вопросы по тегам