如果我在 Postman 的phone
数字字段中输入多于或少于10位数的数字,我会在终端中收到验证错误消息,服务器会崩溃,但我想在 Postman JSON中得到该错误消息。如何做到这一点?
schema.js
const { json } = require("body-parser");
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const SomeModelSchema = new Schema({
phone: {
type: Number,
required:true,
unique: true,
validate: {
validator: (val) => {
var re = /^\d{10}$/;
return (!val ) || re.test(val)
},
message: 'Provided phone number is invalid.'
},
},
module.exports = mongoose.model("SomeModel", SomeModelSchema);
Post方法
router.post("/admin/add_profile", async (req, res) => {
try {
const send = new SomeModel({
phone: req.body.phone,
});
send.save();
res.json({
responseMessage: "Everything worked as expected",
});
} catch (error) {
res.status(400).send(err.message);
}
});
错误消息,但我需要在 Postman 响应
中显示错误消息phone number is invalid
1条答案
按热度按时间xwbd5t1u1#
您应该
await
您的save()
呼叫。否则呼叫会继续执行,但它永远不会到达catch-block,因为错误是在您的promise中异步掷回的。这也是为什么你的整个应用程序崩溃,并没有捕捉到这个错误的原因。
这意味着只要使用
await send.save();
就可以解决这个问题。之后,您的catch块将被处理。不幸的是,您在名为error
的变量中捕获了错误,但您试图从名为err
的变量中读取消息,这仍然需要更正。