Как установить значение поля defaultValue для возврата значения из другого поля в Sequelize.js

У меня есть следующее определение модели, созданное для 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

this - это не текущий объект, который вы создаете. Отсюда ошибка
AbhinavD 02.05.2018 06:09

@AbhinavD Я так много почерпнул из ошибки. Итак, как мне получить значение другого поля и сделать его значением по умолчанию для этого?

paceaux 02.05.2018 06:10

Извини за это. AFAIK, sequelize не поддерживает это. Конечно, вы можете добавить эту проверку во время создания объекта на уровне приложения.

AbhinavD 02.05.2018 06:27
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
3
3 250
1

Ответы 1

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

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

Другие вопросы по теме