Nestjs 类型唯一行
我试图在我的NestJS上使用typeOrm创建一个实体,但它并没有像我预期的那样工作 我有以下实体 @实体“表一” 导出类TableOneModel{ @主生成列 身份证号码 @主柱 tableTwoID:编号 @主柱 表3ID:编号 @CreateDateColumn 创建日期?:日期 } 这段代码生成一个迁移,该迁移生成一个如下示例所示的表Nestjs 类型唯一行,nestjs,typeorm,Nestjs,Typeorm,我试图在我的NestJS上使用typeOrm创建一个实体,但它并没有像我预期的那样工作 我有以下实体 @实体“表一” 导出类TableOneModel{ @主生成列 身份证号码 @主柱 tableTwoID:编号 @主柱 表3ID:编号 @CreateDateColumn 创建日期?:日期 } 这段代码生成一个迁移,该迁移生成一个如下示例所示的表 +--------------+-------------+------+-----+----------------------+-------+
+--------------+-------------+------+-----+----------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-------------+------+-----+----------------------+-------+
| id | int(11) | NO | | NULL | |
| tableTwoID | int(11) | NO | | NULL | |
| tableThreeID | int(11) | NO | | NULL | |
| createdAt | datetime(6) | NO | | CURRENT_TIMESTAMP(6) | |
+--------------+-------------+------+-----+----------------------+-------+
+----+------------+--------------+----------------------------+
| id | tableTwoID | tableThreeID | createdAt |
+----+------------+--------------+----------------------------+
| 1 | 1 | 1 | 2019-10-30 19:27:43.054844 |
| 2 | 1 | 1 | 2019-10-30 19:27:43.819174 | <- should not allow the insert of this row
+----+------------+--------------+----------------------------+
好的,问题是,我希望表只允许一行具有tableTwoID和tableTwoID,我应该在实体中使用什么来生成我期望的表
预期不允许像下面的示例那样的行
+--------------+-------------+------+-----+----------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-------------+------+-----+----------------------+-------+
| id | int(11) | NO | | NULL | |
| tableTwoID | int(11) | NO | | NULL | |
| tableThreeID | int(11) | NO | | NULL | |
| createdAt | datetime(6) | NO | | CURRENT_TIMESTAMP(6) | |
+--------------+-------------+------+-----+----------------------+-------+
+----+------------+--------------+----------------------------+
| id | tableTwoID | tableThreeID | createdAt |
+----+------------+--------------+----------------------------+
| 1 | 1 | 1 | 2019-10-30 19:27:43.054844 |
| 2 | 1 | 1 | 2019-10-30 19:27:43.819174 | <- should not allow the insert of this row
+----+------------+--------------+----------------------------+
这是TypeORM当前预期的行为。根据文档,如果您有多个@PrimaryColumn装饰器,则创建一个复合键。组合键列的组合在上述“1”+“1”+“1”=“111”与“2”+“1”+“1”=“211”中必须是唯一的。如果您希望使每一列都是唯一的,同时又是一个复合主键,那么您应该能够执行类似@PrimaryColumn{unique:true}的操作,这是TypeORM当前预期的行为。根据文档,如果您有多个@PrimaryColumn装饰器,则创建一个复合键。组合键列的组合在上述“1”+“1”+“1”=“111”与“2”+“1”+“1”=“211”中必须是唯一的。如果您希望使每个列都是唯一的,同时又是一个复合主键,那么您应该能够执行类似@PrimaryColumn{unique:true}的操作,尝试将该列标记为唯一的 @独特的
ColumnName尝试将列标记为唯一 @独特的
ColumnName谢谢,这个技巧帮助解决了我的问题,我用过这样的@Unique'uniqueTableTwoIDTableThreeID',['tableTwoID','tableThreeID']注释实体类而不是列将生成复合键谢谢,这个技巧帮助解决了我的问题,我用过这样的@Unique'uniqueTableTwoIDTableThreeID',['tableTwoID','tableTwoID']将实体类注释为非列将生成复合主键我收到消息错误:当使用多个@PrimaryColumn decorator与TypeORM和sqlite3时,Sqlite不支持复合主键上的自动增量。我收到消息错误:当使用多个@PrimaryColumn时,Sqlite不支持复合主键上的自动增量n具有TypeORM和sqlite3的decorator。