如何说电子邮件是 mongoose 架构中唯一的自定义消息。我不想从我的后端检查这封电子邮件是否存在,因为我已经在 mongoose 架构中说过
email: {
type: String,
required: [true, "Please Enter your Email"],
unique: [
true,
"Please use unique mail to create an account",
],
validate: [validator.isEmail, "Please Enter a valid Email"],
},
从错误中获取此消息。控制台中的消息,但我得到的不是这个:"message": "E11000 duplicate key error collection: E-COMMERS_v1_Database.users index: email_1 dup key: { email: \"ej@gmail.com\" }",
我知道这条消息的含义,但我将自定义消息设置为
unique: [
true,
"Please use unique mail to create an account",
],
我想从 mongoose/DB 获取我的消息。如何??这是设置消息的正确方法吗?
回答1
我们可以在注册控制器中解决它,或者从后端而不是从 DBM 路由您的任何 js 文件。所以我们可以在 catch 块中写一条语句:
if (e.message.includes("E11000")) {
return res.status(500).json({
message: "This Email Already Used try with another email",
success: false,
});
}
或者我们可以制作自己的错误处理函数
(err,req,res,next)=>{
if (err.message.includes("E11000")) {
return res.status(500).json({
message: "This Email Already Used try with another email",
success: false,
});
}
}
我们可以使用上述错误处理函数多次使用不同的语句来处理各种错误,例如
module.exports = (err, req, res, next) => {
err.statusCode = err.statusCode || 500;
err.message = err.message || "Internal Server Error";
return res.status(err.statusCode).json({
success: false,
error: err.stack,
});
};