Nestjs, TypeORM, MySQL 问题,当插入数据时如何保证某几个字段的唯一性? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
LandCruiser
V2EX    程序员

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

  •  
  •   LandCruiser 2023 年 7 月 31 日 1489 次点击
    这是一个创建于 988 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    8 条回复    2023-08-03 15:18:02 +08:00
    codehz
        1
    codehz  
       2023 年 7 月 31 日
    直接在数据库里上 unique 索引不就好了? orm 应该也提供类似功能吧
    LandCruiser
        2
    LandCruiser  
    OP
       2023 年 7 月 31 日
    @codehz typeORM 提供了 unique 装饰器,但是不起作用,我查资料说是只有数据库迁移的时候才起作用,离谱。
    jiangzm
        3
    jiangzm  
       2023 年 7 月 31 日
    应该是结构没同步好,手动加下唯一索引就好
    LandCruiser
        4
    LandCruiser  
    OP
       2023 年 7 月 31 日
    @jiangzm
    @codehz 我现在手动设置上 unique 索引了,请问这种做法在开发中常见吗?我刚开始学服务端开发。。。知识不成体系
    Belmode
        5
    Belmode  
       2023 年 7 月 31 日
    表结构同步和迁移这个流程本来就不包含再应用里面。

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

    参考 https://typeorm.bootcss.com/migrations , 手动运行一下 migration 流程。
    wu00
        6
    wu00  
       2023 年 7 月 31 日
    非常常见、最简单、最安全
    kongkx
        7
    kongkx  
       2023 年 7 月 31 日 via iPhone
    用 migration 控制数据库应该不会出现这么问题吧。如果一些特殊的情况不能直接生成 migration ,也应该是在 migration 上面改吧。
    LandCruiser
        8
    LandCruiser  
    OP
       2023 年 8 月 3 日
    @jiangzm
    @Belmode
    @kongkx

    还真是结构没同步,找到问题了,我 TypeOrmModule.forRoot({synchronize:false})了,我看 nest 文档说生产环境要把这个设置为 false ,我怕到时候忘了就直接给改了,结果就不同步了,还是我自己的问题,文档没看全。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1203 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 18:23 PVG 02:23 LAX 11:23 JFK 14:23
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86