Запрос Axios возвращает ошибку 500, но запрошенные данные JSON есть (в объекте ошибки) - PullRequest
0 голосов
/ 10 февраля 2019

Я извлекаю данные из базы данных (хранилище данных GCloud) с помощью API Node.js и использую axios для выполнения вызовов AJAX на сервере Express.js.Метод GET демонстрирует странное поведение: он возвращает ошибку 500, хотя сервер, похоже, успешно извлекает данные из базы данных.Сначала я думал, что что-то не так отправлял данные обратно во внешний интерфейс, но после попытки JSON.stringify(error) в пределах catch() в вызове axios, я не думаю, что это так - JSON.stringify(error) показываетжелаемый объект, как я ожидал, но это не имеет смысла вообще.Что может быть не так?

В аналогичных сценариях (без использования axios) я пробовал оба res.json () и res.send () на стороне сервера, и оба работали раньше, но здесь ни один изони решают проблему в front-end.Вот мой код:

Код серверной стороны

server.get('/getCard.datastore/:cardID/', (req, res, next) => {

    getModel().read(req.params.cardID, (err, entity) => {
      if (err) {
        next(err);
        return;
      }
      console.log(entity); // I verified that data is retrieved  successfully here.
      res.send(entity); 
    })

  })

Код переднего конца (код axios) (Что должно работать)

 let path = ("/getCard.datastore/" + card.id);
 axios.get(path, card).then(function (response){
     console.log(response); //here I should receive my data, but I don't.
 })
 .catch(function(error){
     console.log(error); // this returns a 500 error
 });

Альтернативный код переднего конца ("работает "очень странно"

 let path = ("/getCard.datastore/" + card.id);
 axios.get(path, card).then(function (response){
     console.log(response);
 })
 .catch(function(error){
     console.log(JSON.stringify(error)); // This shows the JSON object I was trying to retrieve, which doesn't make sense.
 });

Короче говоря, ожидаемый результат заключается в нормальном получении объекта после его успешного извлечения из базы данных.Фактический результат заключается в том, что он получен после вызова http, но внутри объекта ошибки в catch(), который регистрируется как ошибка сервера 500 при выполнении console.log(error), но обнаруживает себя после доступа к нему как console.log(JSON.stringify(error)).

...