Axios Get 请求的问题 - 可能是异步问题
Problem with Axios Get request - might be an Asynchronous problem
我好像遇到了异步问题。我在整个应用程序中使用了 React、Express、Sequelize 和 MariaDB。我在前端使用 axios 来发出获取请求。但是,get 请求总是 returns 一个空值。但是,在我的后端代码中,我知道请求正在调用数据库 findAll()。
前端(React/Axios)
componentDidMount() {
this.getPets();
}
getPets = async () => {
try {
const resp = await axios.get('/getdogs');
this.setState({ pets: resp.body });
console.log(resp.data);
} catch (err) {
// Handle Error Here
console.error(err);
}
server.js
app.get('/getdogs', (req, res) => {
console.log("IN THE FUNCTION");
const pets = db.getPets();
console.log("All pets:", JSON.stringify(pets, null, 2));
res.send(pets);
});
database.js
async function getPets() {
const pets = await Pets.findAll();
console.log("All pets:", JSON.stringify(pets, null, 2));
return JSON.stringify(pets, null, 2);
}
来自 server.js
的输出
nodemon] starting `node server.js`
Listening on port 5000
IN THE FUNCTION
All pets: {}
warning: please use IANA standard timezone format ('Etc/GMT0')
warning: please use IANA standard timezone format ('Etc/GMT0')
Executing (default): SELECT `id`, `name`, `createdAt`, `updatedAt` FROM `Pets` AS `Pets`;
All pets: [
{
"id": 1,
"name": "HULK",
"createdAt": "2020-09-15T23:09:43.000Z",
"updatedAt": "2020-09-15T23:09:43.000Z"
},
{
"id": 2,
"name": "Martha",
"createdAt": "2020-09-15T23:09:43.000Z",
"updatedAt": "2020-09-15T23:09:43.000Z"
},
{
"id": 3,
"name": "Bernie",
"createdAt": "2020-09-15T23:09:43.000Z",
"updatedAt": "2020-09-15T23:09:43.000Z"
}
]
- axios 响应没有
body
属性。回复在data
属性,见Response schema
this.setState({ pets: resp.data });
console.log(resp.data);
- 您还没有等待数据库的结果:
db.getPets().then(pets => {
console.log("All pets:", JSON.stringify(pets, null, 2));
res.send(pets);
});
我好像遇到了异步问题。我在整个应用程序中使用了 React、Express、Sequelize 和 MariaDB。我在前端使用 axios 来发出获取请求。但是,get 请求总是 returns 一个空值。但是,在我的后端代码中,我知道请求正在调用数据库 findAll()。
前端(React/Axios)
componentDidMount() {
this.getPets();
}
getPets = async () => {
try {
const resp = await axios.get('/getdogs');
this.setState({ pets: resp.body });
console.log(resp.data);
} catch (err) {
// Handle Error Here
console.error(err);
}
server.js
app.get('/getdogs', (req, res) => {
console.log("IN THE FUNCTION");
const pets = db.getPets();
console.log("All pets:", JSON.stringify(pets, null, 2));
res.send(pets);
});
database.js
async function getPets() {
const pets = await Pets.findAll();
console.log("All pets:", JSON.stringify(pets, null, 2));
return JSON.stringify(pets, null, 2);
}
来自 server.js
的输出nodemon] starting `node server.js`
Listening on port 5000
IN THE FUNCTION
All pets: {}
warning: please use IANA standard timezone format ('Etc/GMT0')
warning: please use IANA standard timezone format ('Etc/GMT0')
Executing (default): SELECT `id`, `name`, `createdAt`, `updatedAt` FROM `Pets` AS `Pets`;
All pets: [
{
"id": 1,
"name": "HULK",
"createdAt": "2020-09-15T23:09:43.000Z",
"updatedAt": "2020-09-15T23:09:43.000Z"
},
{
"id": 2,
"name": "Martha",
"createdAt": "2020-09-15T23:09:43.000Z",
"updatedAt": "2020-09-15T23:09:43.000Z"
},
{
"id": 3,
"name": "Bernie",
"createdAt": "2020-09-15T23:09:43.000Z",
"updatedAt": "2020-09-15T23:09:43.000Z"
}
]
- axios 响应没有
body
属性。回复在data
属性,见Response schema
this.setState({ pets: resp.data });
console.log(resp.data);
- 您还没有等待数据库的结果:
db.getPets().then(pets => {
console.log("All pets:", JSON.stringify(pets, null, 2));
res.send(pets);
});