Axios GET请求响应未定义

时间:2019-01-24 05:00:00

标签: javascript express httprequest axios ejs

我正在尝试在Node JS Express应用程序中进行 axios呼叫,并将数据发送到我的index.ejs文件。 问题是我可以在我的callApijavascript文件中看到数据,但是我无法访问我的app.js中的响应未定义的值)。

这是我的 app.js 文件中的相关代码:

 //iNDEX pAGE RENDER
app.get('/', function (req, rep) {
    var response = callApi.GetAll();
    var users = response.users;
    var activities = response.activities;
    console.log('Users ' + users);
    console.log('Activities ' + activities);
    rep.render('index', {
        users: users,
        activities: activities
    });
});

这是我的 callApi.js 这里的日志完美地返回了api数据

var GetAll = function () {
  axios.all([
      axios.get(initGet.uri + 'users/'),
      axios.get(initGet.uri + 'activities/')
    ])
    .then(axios.spread(function (userResponse, activitiesResponse) {
      console.log('User', userResponse.data);
      console.log('Activities', activitiesResponse.data);
      return {
        users: userResponse.data,
        activities: activitiesResponse.data
      };

    }));

};
module.exports = {
  GetAll: GetAll
};
当我运行index.ejs时,

我的错误 {“错误”:{“消息”:“无法读取未定义的属性'用户'”}}

谢谢。

确实重复。

在阅读以下内容后:“如何返回异步调用的响应?” 回答我做了一个回调函数,它起作用了

我的新 callApi.js:

const axios = require('axios');
const initGet = {
  uri: 'http://localhost:3000/'
};

var apiCaller = function (cb) {
  axios.all([
    axios.get(initGet.uri + 'users/'),
    axios.get(initGet.uri + 'activities/')
  ])
  .then(axios.spread((userResponse, activitiesResponse) => {
    /* console.log('User', JSON.stringify(userResponse.data));
    console.log('Activities', JSON.stringify(activitiesResponse.data));  */
    var data= {
      users: userResponse.data,
      activities: activitiesResponse.data
    };
    cb(data)

  }))
};

var GetAll = function (cb) {
  const users = apiCaller(cb);
  const activities = apiCaller(cb);

  return {
    users: JSON.stringify(users),
    activities: JSON.stringify(activities)
  };
}; 
module.exports = {
  GetAll: GetAll
};

非常感谢!

0 个答案:

没有答案