我正在尝试创建一个到MongoDB数据库的post请求。这个模式有一些必需的属性,我正在尝试处理来自缺少这些必需属性的请求的ValidationErrors。
const post_property = async (req, res) => {
try {
const ppty = new Properties(req.body);
ppty.save();
res.status(201).json({status: true, msg: "Property created", property: ppty});
} catch (error) {
if (error instanceof mongoose.Error.ValidationError) {
res.status(400).json({status: false, msg: error.message});
}
res.status(500).json({status: false, msg: error.message});
}
}
我的模式如下所示:
const PropertiesSchema = new mongoose.Schema(
{
name: { type: String, required: true },
address: {
street: { type: String, required: true },
number_or_apt: { type: String, required: true },
city: { type: String, required: true },
state_province: { type: String, required: true },
zip_code: { type: String, required: true },
country: { type: String, required: true },
latitude: { type: String, required: true },
longitude: { type: String, required: true },
},
property_images: [ String ],
}
);
const Properties = mongoose.model('properties', PropertiesSchema);
每当我发送缺少必需组件的请求时,节点服务器就会崩溃。我该如何处理这个错误?
我已经尝试实现中间件来处理这个错误,但是没有成功。
2条答案
按热度按时间1cklez4t1#
定义架构时,还可以定义错误消息以获得更好的方法
该模式如下所示:
当在没有
name
或任何字段为required
的情况下调用create时,将在属性errors
内抛出属性错误消息:关于确认错误文档,处理错误的方法如下:
cgfeq70w2#
我设法解决这个问题,使用承诺如下。
这将正确捕获验证错误。