Sequelize - получить правильный путь при проверке ассоциаций модели - PullRequest
0 голосов
/ 11 июня 2018

Я использую 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);

Затем я создаю экземпляр модели события, с ассоциированным, как это:

const body = {
    questions: [
        { description: '' } // is obviously invalid
    ],
    // some other fields
}

const newEvent = await Event.create(body, {
    include: [ Question ]
});

Если у меня есть ошибки проверки для самого экземпляра события,он возвращает SequelizeValidationError, где я вижу атрибут path для каждого ValidationErrorItem.Однако, когда у меня есть ошибка проверки на дочерней модели, атрибут 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 Ответ

0 голосов
/ 13 июня 2018

Видимо, он еще не представлен, я подал вопрос о репозитории Sequelize, вот он: https://github.com/sequelize/sequelize/issues/9524

...