节点的 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'的主要内容,如果未能解决你的问题,请参考以下文章
Flask SQLAlchemy NOT NULL 约束在主键上失败