Sequelize-使用uuid作为id-通过bulkInsert自动创建

4

我有一个这样初始化的模型:

Group.init({
    id: {
      type: DataTypes.UUID,
      primaryKey: true,
      allowNull: false,
      defaultValue: DataTypes.UUIDV4,
    },
    name: Sequelize.STRING,
});

我还有一个相关的迁移文件:

module.exports = {
  up: (queryInterface, Sequelize) => {
    return queryInterface.createTable('Groups', {
      id: {
        type: Sequelize.UUID,
        primaryKey: true,
        allowNull: false,
        defaultValue: Sequelize.UUIDV4,
      },
      name: Sequelize.STRING,
    });
  },
  down: (queryInterface, Sequelize) => {
    return queryInterface.dropTable('Groups');
  },
};

我正在尝试在种子文件中使用bulkInsert同时创建组,只传递了一个name属性,期望DB创建uuids:

const groups = [{ name: 'group-1' }, { name: 'group-2' }];
return queryInterface.bulkInsert('Groups', groups, {
  returning: true,
  validate: true,
  individualHooks: true,
});
},

但在这个种子期间出现了错误:

ERROR: null value in column "id" violates not-null constraint

如何自动生成uuid?


我有一个类似的问题。你找到解决方法了吗? - lpacheco
1个回答

2

我遇到了类似的问题。在我的情况下(迁移文件上),我做了以下更改:

defaultValue: Sequelize.UUIDV4, 

为了

defaultValue: Sequelize.literal('uuid_generate_v4()'),

PS:我正在使用Postgres,因此需要在模式上启用uuid模块。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接