Как установить defaultValue поля для возврата значения из другого поля в Sequelize.js - PullRequest
0 голосов
/ 02 мая 2018

У меня есть следующее определение модели, созданное для sequelize.js:

const Item = sequelize.define('item', {
        id: {
            type: Sequelize.INTEGER,
            primaryKey: true,
            autoIncrement: true
        },
        lender: {
            type: Sequelize.STRING,
            allowNull: false,
            defaultValue() {
                return this.getDataValue('owner');
            }
        },
        owner: {
            type: Sequelize.STRING,
            allowNull: false,
        },
    },
    {
        tableName: 'items',
        underscored: true,
        updatedAt: false,
        createdAt: 'timestamp'
    }

);

Мое намерение состоит в том, что, если поле кредитора lender не предоставлено, тогда оно установлено в поле owner.

Когда я запускаю свой модульный тест, я получаю результат TypeError: this.getDataValue() is not a function.

В документации приведен пример defaultValue, являющегося функцией. Что я тут не так делаю?

Я использую sequelize 4.37 и PostgreSQL

1 Ответ

0 голосов
/ 02 мая 2018

Вы можете установить defaultValue для каждого ключа, но это используется только для создания / выборки значения этого конкретного столбца. Однако если вы хотите получить значение другого столбца, если значение нужного столбца равно нулю, вы можете использовать hooks .

Вы можете применить hooks при поиске, и всякий раз, когда значение вашего столбца равно нулю, оно заполняет свое значение альтернативным значением столбца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...