如何转换mongoose架构错误

时间:2017-05-26 20:21:16

标签: node.js mongoose

我想转换所有 mongoose架构错误。

让我们说我是UserSchema:

const UserSchema = new mongoose.Schema({
  email: {
     type: String,
     unique: true,
     required: [true, 'E-Mail is required']
  },
  password: {
     type: String,
     required: [true, 'Password is required']
  }
}

如果我尝试在没有电子邮件和密码的情况下保存用户,我会得到以下回复:

{
  "errors": {
    "password": {
      "message": "Password is required",
      "name": "ValidatorError",
      "properties": {
        "type": "required",
        "message": "Password is required",
        "path": "password"
      },
      "kind": "required",
      "path": "password"
    },
    "email": {
     // ...
    }
  },
  "_message": "User validation failed",
  "name": "ValidationError"
}

我想为我的所有架构转换此错误响应全局,例如转换为

{
  errors: [
      { message: "Password is required", path: "password" }
      // ...
  ]
}

有没有办法将转换方法全局应用于所有架构错误? (我想避免手动转换每个响应)

1 个答案:

答案 0 :(得分:0)

var schema = new Schema({
  name: {
    type: String,
    required: true
  }
});
var Man= db.model('Man', schema);

// This man has no name :(
var man = new Man();
man.save(function(error) {
  assert.equal(error.errors['name'].message,
    'Path `name` is required.');

  error = man.validateSync();
  assert.equal(error.errors['name'].message,
    'Path `name` is required.');
});