【发布时间】:2021-06-03 10:44:14
【问题描述】:
所以我有想要验证的猫鼬模式
const mongoose = require('mongoose')
const productSchema = new mongoose.Schema({
name: {
type: String,
required: [true, "You Must Include A Name"],
toLowerCase: true,
},
price: {
type: Number,
required: [true, "Price Must Be Included"],
min: 0
},
})
const Product = mongoose.model('Product', productSchema);
module.exports = Product;
在 index.js 中我扩展了 Error 类并编写了这个中间件
app.use((err, req, res, next) => {
if (err.name == 'CastError') next(new AppError(`This is a CastError${err.message}`, 400))
else if (err.name == 'ValidationError') next(new AppError(err.message, 400))
else {
next(err)
}
})
app.use((err, req, res, next) => {
console.log(err.msg)
const { message = 'Something Went Wrong', status = 500 } = err
res.status(status).send(message)
})
当我出现验证错误时,我得到以下信息:产品验证失败:价格:必须包含价格 或者当名称和价格都留空时,它会得到:产品验证失败:名称:您必须包含名称,价格:必须包含价格
我只想:“必须包含价格” 或:“必须包含姓名” 我怎样才能做到这一点?
【问题讨论】:
标签: express validation mongoose