Nestjs, TypeORM, MySQL 问题,当插入数据时如何保证某几个字段的唯一性?

2023-07-31 17:40:04 +08:00
 LandCruiser

服务端小白,问了 GPT 让先查出来,感觉先查再插入不太对劲,有点麻烦,是否有其他简便方法?

问题案例 { name:'123', code:'345', dep:'789', type:'666' }

如何保证插入数据时,name 和 code 都是唯一的呢?

1093 次点击
所在节点    程序员
8 条回复
codehz
2023-07-31 17:46:07 +08:00
直接在数据库里上 unique 索引不就好了? orm 应该也提供类似功能吧
LandCruiser
2023-07-31 17:47:30 +08:00
@codehz typeORM 提供了 unique 装饰器,但是不起作用,我查资料说是只有数据库迁移的时候才起作用,离谱。
jiangzm
2023-07-31 17:50:51 +08:00
应该是结构没同步好,手动加下唯一索引就好
LandCruiser
2023-07-31 17:57:14 +08:00
@jiangzm
@codehz 我现在手动设置上 unique 索引了,请问这种做法在开发中常见吗?我刚开始学服务端开发。。。知识不成体系
Belmode
2023-07-31 18:03:23 +08:00
表结构同步和迁移这个流程本来就不包含再应用里面。

即使添加了正确的装饰器,把服务运行起来,也肯定会自动处理表结构的。

参考 https://typeorm.bootcss.com/migrations , 手动运行一下 migration 流程。
wu00
2023-07-31 19:03:22 +08:00
非常常见、最简单、最安全
kongkx
2023-07-31 20:11:26 +08:00
用 migration 控制数据库应该不会出现这么问题吧。如果一些特殊的情况不能直接生成 migration ,也应该是在 migration 上面改吧。
LandCruiser
2023-08-03 15:18:02 +08:00
@jiangzm
@Belmode
@kongkx

还真是结构没同步,找到问题了,我 TypeOrmModule.forRoot({synchronize:false})了,我看 nest 文档说生产环境要把这个设置为 false ,我怕到时候忘了就直接给改了,结果就不同步了,还是我自己的问题,文档没看全。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/961267

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX