为什么mongoose自定义错误处理不起作用

时间:2017-01-11 20:49:17

标签: javascript node.js mongodb mongoose

我正在尝试处理所需的验证错误,以便在传递给前端之前使错误消息更具可读性:

UserSchema
  .post('save', function (error, doc, next) {
    console.log(error.errors);
    if (error.name === 'ValidationError' && error.errors.academicRole.kind === 'required') {
      console.log('custom error');
      next(new Error('Academic Role is required.'));
    } else {
      next(error);
    }
  });

此代码导致调用User的保存回调,当缺少academicRole属性时,error为空对象;为什么不使用包含自定义消息的错误对象调用保存回调?

1 个答案:

答案 0 :(得分:0)

应在post('validate')挂钩中检查验证错误。

如果存在验证错误,则不会调用save()方法和关联的挂钩('保存')和发布('保存')。

UserSchema
  .post('validate', function (err, doc, next) {
    console.log(err.errors);
    if (err.name === 'ValidationError' && err.errors.academicRole.kind === 'required') {
      console.log('custom error');
      next(new Error('Academic Role is required.'));
    } else {
      next(err);
    }
  });