mongodb 如何在Postman响应中传递Mongoose验证错误

67up9zun  于 2022-11-03  发布在  Go
关注(0)|答案(1)|浏览(111)

如果我在 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

xwbd5t1u

xwbd5t1u1#

您应该await您的save()呼叫。否则呼叫会继续执行,但它永远不会到达catch-block,因为错误是在您的promise中异步掷回的。
这也是为什么你的整个应用程序崩溃,并没有捕捉到这个错误的原因。
这意味着只要使用await send.save();就可以解决这个问题。之后,您的catch块将被处理。不幸的是,您在名为error的变量中捕获了错误,但您试图从名为err的变量中读取消息,这仍然需要更正。

相关问题