Как остановить sequelize от отправки значения по умолчанию в таблицу MYSQL?

0

Журнал консоли:

Executing (default): INSERT INTO 'testtables' ('id','forgot_code','customer_id') VALUES (DEFAULT,610,199)

Как я могу остановить sequelize от отправки значения DEFAULT в мой id столбца? Как я могу остановить sequelize от вставки в мой первичный ключ, поскольку он уже включен автоматически?

Мой код:

var TestTable= sequelize.define('testtables', {
    id:{
        type:Sequelize.INTEGER,
        primaryKey: true,
        autoIncrement: true
    },
    forgot_code:Sequelize.INTEGER,
    customer_id:Sequelize.INTEGER   
},{
    timestamps: false,
});
  • 1
    Мне любопытно: это действительно вызывает проблемы? Если так, то в чем ошибка? Обычно я не пишу такие запросы, но похоже, что это будет иметь тот же эффект, что и вообще не ссылаться на столбец в операторе вставки (который неявно вставляет «default», который неявно по-прежнему равен NULL даже если столбец NOT NULL ) и должен приводить к вставке следующего значения автоинкремента.
Теги:
sequelize.js

1 ответ

0

Вы должны удалить autoIncrement: true из определения вашей модели. Теперь вставка без предоставления значения id не будет выполнена. Например, нижеприведенный код не будет работать

const User = sequelize.define('user', {
  id: {
    type: Sequelize.INTEGER,
    primaryKey: true,
    // autoIncrement: true
  },
  username: Sequelize.STRING,
});

sequelize.sync({ force: true })
  .then(() => User.create({
    username: 'test123'
  }).then((user) => {
    console.log(user);
  }));

Однако, если вы раскомментируете autoIncrement: true, вставка будет проходить

Ещё вопросы

Сообщество Overcoder
Наверх
Меню