我正在node.js / react中使用猫鼬和axios,需要在客户端获取特定的验证错误,以便我可以更新表单。在这种情况下,用户电子邮件已经是数据库,并且不是唯一的。返回前端的错误似乎无用。我在前端尝试了err.message,但是它什么也没有给我。如何调用特定的错误消息告诉我实际错误?
前端API已调用并包含:
API.createUser({
userEmail: this.state.profile.email.toLowerCase(),
})
.catch(err => console.log(err))
后端控制器
db.WmUser
.create(req.body)
.then(dbModel => res.json(dbModel))
.catch(err => res.status(422).json(err));
MONGOOSE SCHEMA包括:
userEmail: {type: String, unique: true, required: true},
结果返回前端错误:
Error: Request failed with status code 422
at createError (createError.js:16)
at settle (settle.js:18)
at XMLHttpRequest.handleLoad (xhr.js:77)
控制器后端的结果返回:
如果我在控制器中使用以下代码,则会收到我需要的错误消息,但不知道如何将其带回前端:
.catch(err=> console.log(err.message))
答案 0 :(得分:0)
在后端控制器中尝试以下操作
var WmUser = require('./path/to/WmUser.js')//your db mdel path
WmUser(req.body).save().then(dbModel => res.json(dbModel))
.catch((err) => {
console.error('Creation fail error---->', err);
res.status(422).json(err)
});
答案 1 :(得分:0)
问题是我在前端调用错误的方式。它必须是错误的。以防万一有人遇到这个问题
前端的功能调用轴
API.createUser({
userEmail: this.state.profile.email.toLowerCase(),
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
if(error.response.data.code == 11000){
console.log("THE EMAIL IS ALREADY IN THE DATABASE");
}
console.log(error.response);
})
API文件中的AXIOS功能
createUser: function(userData){
return axios.post("/api/wmUser/", userData);
}