Sequelize - 在验证模型的关联时获取正确的路径
Posted
技术标签:
【中文标题】Sequelize - 在验证模型的关联时获取正确的路径【英文标题】:Sequelize - get proper path while validating associations of a model 【发布时间】:2018-06-11 12:37:00 【问题描述】:我将 Sequelize 用作我的项目的 ORM。我有这个结构:
const Event = sequelize.define('event',
// fields defined
);
const Question = sequelize.define('question',
description:
type: Sequelize.STRING,
allowNull: false,
defaultValue: '',
validate:
notEmpty: msg: 'Description should be set.'
,
,
// other fields defined
);
Event.hasMany(Question);
Question.belongsTo(Event);
然后我创建一个 Event 模型的实例,并带有关联,如下所示:
const body =
questions: [
description: '' // is obviously invalid
],
// some other fields
const newEvent = await Event.create(body,
include: [ Question ]
);
如果我对 Event 实例本身有验证错误,它会返回 SequelizeValidationError
,在这里我可以看到每个 ValidationErrorItem
的 path
属性。但是,当我在子模型上出现验证错误时,此验证错误的 path
属性不清楚:
"message": "Description should be set.",
"type": "Validation error",
"path": "description",
"value": "",
"origin": "FUNCTION",
"instance":
"required": true,
"id": null,
"description": "",
"event_id": 60,
"updated_at": "2018-06-11T12:25:04.666Z",
"created_at": "2018-06-11T12:25:04.666Z"
,
"validatorKey": "notEmpty",
"validatorName": "notEmpty",
"validatorArgs": [
"msg": "Description should be set."
],
"__raw":
"validatorName": "notEmpty",
"validatorArgs": [
"msg": "Description should be set."
]
问题是,目前还不清楚是什么导致了这个错误以及哪个孩子无效。当我使用 Mongoose 作为 ORM 时,如果我也这样做,path
属性将等于 questions.0.description
之类的属性,这样就更清楚了,这样您就可以看到哪个孩子无效。
所以,我的问题是:有没有办法在验证子模型时设置path
属性?
【问题讨论】:
【参考方案1】:显然它还没有出现,我已经在 Sequelize repo 上提交了一个问题,这里是:https://github.com/sequelize/sequelize/issues/9524
【讨论】:
以上是关于Sequelize - 在验证模型的关联时获取正确的路径的主要内容,如果未能解决你的问题,请参考以下文章
Sequelize models - 在 Node 中同步时设置关联
仅从 sequelize junction 模型返回指定的关联模型
按关联模型排序时,Sequelize 抛出错误“无法找到模型 x 的有效关联”