【问题标题】:Sequelize UUID with mySQL: Unable to set default valueSequelize UUID with mySQL: Unable to set default value
【发布时间】:2021-06-08 18:35:58
【问题描述】:

我一直在尝试将我的用户表的 id(主键)设置为 UUID。但是,当我尝试播种时,我不断收到此错误:字段“id”没有默认值。

这是我目前在用户模型中的内容:

'use strict';
const {
  Model
} = require('sequelize');
module.exports = (sequelize, DataTypes) => {
  class Users extends Model {};
  
Users.init({
    id: {
      type: DataTypes.UUID,
      defaultValue: DataTypes.UUIDV4,
      allowNull: false,
      primaryKey: true
    },
    user_name: {
      type: DataTypes.STRING,
      allowNull: false,
      validate: {
        notNull: {
          msg: 'Please add a name',
        },
      },
    },
  {
    sequelize,
    modelName: 'Users',
  });
  return Users;

同样,这是我的用户迁移文件中的内容:

'use strict';
module.exports = {
  up: async (queryInterface, Sequelize) => {
    await queryInterface.createTable('Admins', {
      id: {
        type: Sequelize.UUID,
        defaultValue: Sequelize.UUIDV4,
        allowNull: false,
        primaryKey: true
      },
      user_name: {
        type: Sequelize.STRING
      },
      createdAt: {
        allowNull: false,
        type: Sequelize.DATE
      },
      updatedAt: {
        allowNull: false,
        type: Sequelize.DATE
      }
    });
  },
  down: async (queryInterface, Sequelize) => {
    await queryInterface.dropTable('Users');
  }
};

我对 Sequelize 还很陌生,所以希望得到一些关于哪里出了问题的指导!

【问题讨论】:

    标签: mysql node.js sequelize.js sequelize-cli


    【解决方案1】:

    所以,我想我意识到了这个问题:

    由于某种原因,使用播种器文件播种它不会自动生成我认为会自动生成的字段,所以我不得不手动放入。

    'use strict';
    
    const { v4: uuidv4 } = require('uuid');
    
    module.exports = {
      up: async (queryInterface, Sequelize) => {
         await queryInterface.bulkInsert('Users', [{
           id: uuidv4(),
            user_name: 'John Doe',
            "createdAt": new Date(),
            "updatedAt": new Date()
            }], {});
      },
    
      down: async (queryInterface, Sequelize) => {
    
        await queryInterface.bulkDelete('Users', null, {});
    
      }
    };
    

    最初,我一直试图在没有 id:uuidv4() 和 new Date() 的情况下播种(运行命令 npx sequelize-cli db:seed:all),这就是它不起作用的原因。

    【讨论】:

      猜你喜欢
      • 2022-12-02
      • 2020-04-22
      • 2022-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-26
      • 1970-01-01
      • 2022-12-28
      相关资源
      最近更新 更多