【问题标题】:How to transform mongoose schema errors如何转换猫鼬模式错误
【发布时间】:2017-10-27 19:42:53
【问题描述】:

我想转换 所有 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" }
      // ...
  ]
}

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

【问题讨论】:

    标签: node.js mongoose


    【解决方案1】:
    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.');
    });
    

    【讨论】:

    • 这并不能解决全局的问题。我想要一个拦截器之类的东西,它能够在一个地方转换所有错误。
    猜你喜欢
    • 2017-07-08
    • 2018-10-09
    • 2014-12-04
    • 2016-11-13
    • 2016-08-05
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    • 2018-06-15
    相关资源
    最近更新 更多