节点的 Sequelize 不允许在主键上自动生成 UUID *除非*字段名称是 'id'

Posted

技术标签:

【中文标题】节点的 Sequelize 不允许在主键上自动生成 UUID *除非*字段名称是 \'id\'【英文标题】:Node's Sequelize not allowing auto-generated UUID on primary key *unless* field name is 'id'节点的 Sequelize 不允许在主键上自动生成 UUID *除非*字段名称是 'id' 【发布时间】:2014-10-27 03:32:08 【问题描述】:

Sequelize commit 似乎证实了将主键命名为“id”会使其与众不同。根据我对以下 sn-p 的测试,将字段名更改为 'id' 以外的其他值就足够了,无需设置默认值,因此插入失败。

id: type: DataTypes.UUID, primaryKey: true, defaultValue: DataTypes.UUIDV4, allowNull: false

那么有没有办法保持命名主键字段的灵活性并将其默认为 UUID?

【问题讨论】:

我假设你已经在 sequelize 的问题跟踪器上发布了这个并且没有得到答复?如果没有:那应该在发布到 *** 之前完成。 Sequelize 开发人员非常擅长回应针对他们的项目提出的问题。 谢谢,在这里添加:github.com/sequelize/sequelize/issues/2231 【参考方案1】:

问题有点太老了,当时我认为这是不可能的 ,但在 2018 年是可能的 :),我们开始吧:

定义你自己的主键:

sequelize.define('collection', 
  uid: 
    type: Sequelize.INTEGER,
    primaryKey: true,
    autoIncrement: true // Automatically gets converted to SERIAL for postgres
  
);

sequelize.define('collection', 
  uuid: 
    type: Sequelize.UUID,
    primaryKey: true
  
);

READ MORE

【讨论】:

以上是关于节点的 Sequelize 不允许在主键上自动生成 UUID *除非*字段名称是 'id'的主要内容,如果未能解决你的问题,请参考以下文章

在主键上使用 If Not Exists

Flask SQLAlchemy NOT NULL 约束在主键上失败

首先使用代码禁用整数主键上的标识(自动递增)

使用自定义连接表主键 Sequelize BelongsToMany

主键上的非聚集索引?

索引和触发器操作