不能 return 来自 Axios 的结果
Can't return the result from Axios
我最近在做一个全栈项目。这也是我的第一个全栈项目。所以我今天想出了一个问题。
因此,我的后端将数据存储在 MongoDB 中,并且此函数 post 将数据存储到 MongoDB 数据库中,然后 return 如果成功则响应数据。如果没有成功,那么 returns error.My 相关的后端代码:
exports.registerOnlineUser = (req, res) => {
User.findOne({ email: req.body.email }).exec((error, user) => {
if (error) {
res.status(400).json({ message: error });
}
if (user) {
return res.status(400).json({
message: 'User exists already',
});
}
const { fullName, email, address, cardName, cardNo, expDate, cvv } =
req.body;
const userCategory = 'Online';
const newUser = new User({
fullName,
email,
address,
cardName,
cardNo,
expDate,
cvv,
userCategory,
});
newUser.save((error, data) => {
if (error) {
return res.status(400).json({
message: error,
});
}
if (data) {
return res.status(201).json({
user: data,
});
}
});
});
};
所以前端的保存数据功能是这样的。在这个函数中
console.log(response);
也工作正常。它正在记录我输入的数据。
const saveFormData = async () => {
await axios({
method: 'post',
url: 'http://localhost:7000/userInfo/registerOnline',
data: registerData,
validateStatus: (status) => {
return true;
},
})
.catch((error) => {
console.log(error);
return error
})
.then((response) => {
console.log(response);
return response;
});
};
但是下面的函数总是return结果为空值。因此,当我调用此函数和 console.log 时,我将 saveFormData 的 return 值设为 null。
try {
const result = await saveFormData();
console.log(result);
alert('Your registration was successfully submitted!');
} catch (e) {
alert(`Registration failed! ${e.message}`);
}
所以 为什么当我调用它时 return 该函数的值为空值 如何解决该问题?
提前致谢。
你的 saveFormData
函数没有 return 任何东西
const saveFormData = async () => {
return axios({ //you need to return in your saveFormData scope also
method: 'post',
url: 'http://localhost:7000/userInfo/registerOnline',
data: registerData,
validateStatus: (status) => {
return true;
},
})
.catch((error) => {
console.log(error);
return error
})
.then((response) => {
console.log(response);
return response;
});
};
saveFormData
没有 return 值。 try/catch里面的return
语句只是为了这些,对上面的功能没有影响。由于您已经使用 try/catch 块进行错误处理,因此您可以使用:
const saveFormData = async () => {
return axios({
method: 'post',
url: 'http://localhost:7000/userInfo/registerOnline',
data: registerData,
validateStatus: (status) => {
return true;
},
})
}
我最近在做一个全栈项目。这也是我的第一个全栈项目。所以我今天想出了一个问题。 因此,我的后端将数据存储在 MongoDB 中,并且此函数 post 将数据存储到 MongoDB 数据库中,然后 return 如果成功则响应数据。如果没有成功,那么 returns error.My 相关的后端代码:
exports.registerOnlineUser = (req, res) => {
User.findOne({ email: req.body.email }).exec((error, user) => {
if (error) {
res.status(400).json({ message: error });
}
if (user) {
return res.status(400).json({
message: 'User exists already',
});
}
const { fullName, email, address, cardName, cardNo, expDate, cvv } =
req.body;
const userCategory = 'Online';
const newUser = new User({
fullName,
email,
address,
cardName,
cardNo,
expDate,
cvv,
userCategory,
});
newUser.save((error, data) => {
if (error) {
return res.status(400).json({
message: error,
});
}
if (data) {
return res.status(201).json({
user: data,
});
}
});
});
};
所以前端的保存数据功能是这样的。在这个函数中
console.log(response);
也工作正常。它正在记录我输入的数据。
const saveFormData = async () => {
await axios({
method: 'post',
url: 'http://localhost:7000/userInfo/registerOnline',
data: registerData,
validateStatus: (status) => {
return true;
},
})
.catch((error) => {
console.log(error);
return error
})
.then((response) => {
console.log(response);
return response;
});
};
但是下面的函数总是return结果为空值。因此,当我调用此函数和 console.log 时,我将 saveFormData 的 return 值设为 null。
try {
const result = await saveFormData();
console.log(result);
alert('Your registration was successfully submitted!');
} catch (e) {
alert(`Registration failed! ${e.message}`);
}
所以 为什么当我调用它时 return 该函数的值为空值 如何解决该问题? 提前致谢。
你的 saveFormData
函数没有 return 任何东西
const saveFormData = async () => {
return axios({ //you need to return in your saveFormData scope also
method: 'post',
url: 'http://localhost:7000/userInfo/registerOnline',
data: registerData,
validateStatus: (status) => {
return true;
},
})
.catch((error) => {
console.log(error);
return error
})
.then((response) => {
console.log(response);
return response;
});
};
saveFormData
没有 return 值。 try/catch里面的return
语句只是为了这些,对上面的功能没有影响。由于您已经使用 try/catch 块进行错误处理,因此您可以使用:
const saveFormData = async () => {
return axios({
method: 'post',
url: 'http://localhost:7000/userInfo/registerOnline',
data: registerData,
validateStatus: (status) => {
return true;
},
})
}