最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

使用Sequelize.js进行自定义验证错误

运维笔记admin13浏览0评论

使用Sequelize.js进行自定义验证错误

使用Sequelize.js进行自定义验证错误

可以自定义错误

Sequelize.ValidationError

模型:

  var PaymentType = sequelize.define('payment_type' , {
      id: {
      type: DataTypes.INTEGER(11),
      allowNull: false,
      primaryKey: true,
      autoIncrement: true,
      field: 'id'
    },
    code: {
      type: DataTypes.STRING,
      allowNull: false,
      validate:{
        notEmpty: true
      },
      field: 'code'
    },
    name: {
      type: DataTypes.STRING,
      allowNull: false,
      validate:{
        notEmpty: true
      },
      field: 'name'
    }
  }, {
    timestamps: true,
    paranoid: false,
    underscored: true,
    freezeTableName: true,
    tableName: 'payment_types'
  });

我的控制器:

  update(req, res) {
      paymentType
        .update(req.body, {
          where: {
            id: req.params.id
          }
        })
        .then( updatedRecords => {
          res.status(200).json(updatedRecords);
        })
        .catch(Sequelize.ValidationError, error => {
          res.status(400).json(error);
        })
        .catch( error => {
          res.status(500).json(error);
        });

  },

我得到的错误是这样的:

{
  "name": "SequelizeValidationError",
  "message": "Validation error: Validation notEmpty failed",
  "errors": [
    {
      "message": "Validation notEmpty failed",
      "type": "Validation error",
      "path": "name",
      "value": {},
      "__raw": {}
    }
  ]
}

我想传递这样的错误(只有路径和消息):

{
"name":"The field cannot be empty",
"other_field":"custom error message"
}

我不知道我是否可以在模型中指定自定义消息,或者我必须创建一个函数来构建错误消息。

如果我必须构建一个函数,我该如何提取路径并自定义消息?

提前致谢。

回答如下:

您是否尝试像这样更改模型:

 var PaymentType = sequelize.define('payment_type' , {
      id: {
      type: DataTypes.INTEGER(11),
      allowNull: false,
      primaryKey: true,
      autoIncrement: true,
      field: 'id'
    },
    code: {
      type: DataTypes.STRING,
      allowNull: false,
      validate:{
        notEmpty: {
          msg: "The field cannot be empty"
        }
      },
      field: 'code'
    },
    name: {
      type: DataTypes.STRING,
      allowNull: false,
      validate:{
        notEmpty: {
          msg: "The field cannot be empty"
        }
      },
      field: 'name'
    }
  }, {
    timestamps: true,
    paranoid: false,
    underscored: true,
    freezeTableName: true,
    tableName: 'payment_types'
  });

Reference this post

发布评论

评论列表(0)

  1. 暂无评论