如果schema.pre('save')
中的验证失败,如何发送自定义错误消息?例如,如果我有聊天功能,您创建新会话,我想检查与给定参与者的对话是否已经存在,所以我可以这样做:
ConversationSchema.pre('save', function(next, done) {
var that = this;
this.constructor.findOne({participants: this.participants}).then(function(conversation) {
if (conversation) {
// Send error back with the conversation object
} else {
next();
}
});
});
答案 0 :(得分:8)
答案 1 :(得分:0)
我同意JohnnyHK的回答,除了似乎不可能向Error对象添加自定义属性。收到错误并尝试访问该属性时,该值是不确定的,因此解决方案是您可以发送自定义错误消息,但不能添加自定义属性。我的代码如下:
ConversationSchema.pre('save', function(next) {
this.constructor.findOne({participants: this.participants}, function(err, conversation) {
if (err) next(new Error('Internal error'));
else if (conversation) next(new Error('Conversation exists'));
else next();
});
});