ValidationError: «столбец» не может быть пустым в нулевом столбце

При попытке установить passwordResetToken на null я получаю недопустимые пустые ошибки. Если я вручную запускаю запрос к базе данных, никаких проблем.

Полный код для обновления пользователя выглядит следующим образом:

let user = await this.usersRepository.getById(userId);
// ...
const userData = {
    encryptedPassword: await bcrypt.hash(
        newPasswd,
        Number(process.env.BCRYPT_ROUNDS)
    ),
    passwordResetToken: null,
    passwordResetExpires: null
};

user = await this.usersRepository.update(user.id, userData);

У меня есть модель, определенная как таковая

const User = sequelize.define(
'user',
{
    forename: DataTypes.STRING,
    surname: DataTypes.STRING,
    email: DataTypes.STRING,
    encryptedPassword: DataTypes.STRING,
    passwordResetToken: {
        type: DataTypes.STRING,
        allowNull: true,
        defaultValue: null,
        validate: {
            notEmpty: false
        }
    },
    passwordResetExpires: {
        type: DataTypes.DATE,
        allowNull: true,
        defaultValue: null,
        validate: {
            isDate: true
        }
    }
},
{
    classMethods: {
        associate() {
            // associations can be defined here
        }
    }
}
);

Как видите, allowNull имеет значение true, defaultValue — null, а validate: notEmpty — false. Что мне не хватает?

Использование продолжения v4.42.0

Диалект 'mysql'

попробуйте удалить проверку: { notEmpty: false }

ScaisEdge 11.02.2019 18:18

Тот же результат. Я также заметил, что установка notEmpty msg не меняет возвращаемое сообщение.

SavageCore 11.02.2019 18:30
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
2
387
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

На самом деле это было вызвано другой частью моей проверки модулем структура npm.

Мне пришлось установить для empty значение true в моей схеме следующим образом:

  passwordResetToken: {
    type: String,
    required: false,
    empty: true
  },

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