node.js - Sequelize - 在验证模型关联时获得正确的路径

标签 node.js postgresql validation orm sequelize.js

我使用 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 ,我可以在其中看到每个 pathValidationErrorItem 属性。但是,当我在子模型上出现验证错误时,此验证错误的 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."
            }
        ]
    }

问题是,不清楚是什么导致了这个错误以及哪个 child 是无效的。当我使用 Mongoose 作为 ORM 时,如果我也这样做,那么 path 属性将等于 questions.0.description 之类的东西,这样就更清楚了,这样您就可以看到哪个 child 无效。

所以,我的问题是:有没有办法在验证子模型的同时设置 path 属性?

最佳答案

显然它还没有出现,我已经在 Sequelize repo 上提交了一个问题,这里是:https://github.com/sequelize/sequelize/issues/9524

关于node.js - Sequelize - 在验证模型关联时获得正确的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50797936/

相关文章:

javascript - 如何将存储的 javascript 从 node.js 保存到 mongodb

cakephp - 如何在默认位置的其他位置显示CakePHP输入验证错误?

ruby-on-rails - 仅验证数字

javascript - jQuery:检查 href 属性是否有效的简单方法

ruby-on-rails - 在我的 Rails 应用程序中实现实时通知(消息)功能

node.js - 奇怪的 Create-React-App Heroku 错误 - 无法获取/

node.js - 使用 Lambda 代理的 API 网关设置 Cookie

linux - 需要帮助更改 CentOS 7 上的 postgresql 端口

sql - 在另一个表中插入行时如何自动增加一个表中的值

ruby-on-rails - 无法在 Rails 3.1 上设置 UUID 主键