【发布时间】:2021-12-14 08:52:01
【问题描述】:
这些天我正在做一个全栈项目。这也是我的第一个全栈项目。所以我今天想出了一个问题。 所以我的后端将数据存储在 MongoDB 中,这个函数将数据发布到 MongoDB 数据库,如果成功则返回数据响应。如果不成功则返回错误。我的后端代码与此相关:
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(响应);
也可以正常工作。它正在记录我输入的数据。
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;
});
};
但下面的函数是总是为结果返回一个空值。因此,当我调用 this 和 console.log 时,我将 saveFormData 的返回值设为 null。
try {
const result = await saveFormData();
console.log(result);
alert('Your registration was successfully submitted!');
} catch (e) {
alert(`Registration failed! ${e.message}`);
}
那么当我调用它时为什么它会为该函数返回空值以及如何解决该问题? 提前致谢。
【问题讨论】:
-
您是否检查过
registerOnlineUser被正确调用并且 req.body 包含预期的正文? -
是的。此外,在 saveFormData 函数中的 console.log(response) 也可以正常工作。它记录返回的数据。但问题是我无法 console.log 在 try-catch 块中记录结果。
标签: node.js reactjs axios react-fullstack