首页 > 其他分享 >TypeORM 的同步选项

TypeORM 的同步选项

时间:2023-12-30 11:01:45浏览次数:38  
标签:选项 实体类 synchronize 数据库 数据表 同步 TypeORM

配置 TypeORM 连接到数据库时,有一个 synchronize 选项,意思是“同步”,也就是同步 TypeORM 实体和数据表,再详细讲就是根据实体自动创建和修改数据表结构,使其与 TypeORM 定义的实体类相匹配。以 Nest 中的使用为例:

import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';


@Module({
  imports: [
    // 注册 TypeORM 模块
    TypeOrmModule.forRoot({
      type: 'mysql',
      host: 'localhost',
      port: 3306,
      username: 'root',
      password: 'root123',
      database: 'nest',
      entities: [ './entites/*.entity.ts'],
      // 同步
      synchronize: true,
    })
  ]
})
export class AppModule {}

具体来说,synchronize 选项可以做以下几件事情:

  1. 如果数据库中不存在与 TypeORM 实体类对应的数据表,则会自动创建相应的数据表。
  2. 如果数据库中已经存在数据表,但其结构与 TypeORM 实体类不匹配,则会自动对数据表进行修改,使其与实体类相匹配。
  3. 如果数据库中已经存在数据表,并且其结构与 TypeORM 实体类完全一致,则不会做任何操作。

上面的场景1和场景3都很美好,可以帮助我们自动同步数据库结构和实体类定义,避免手动修改数据库结构的繁琐过程,同时也可以避免在修改实体类定义时出现数据结构不匹配的问题。但是场景2,就不那么美好了。假如数据表已经存在了数据,此时再对实体类进行修改,比如删除了一个属性,那么数据表中对应的字段也会被删除,此时就会造成数据的丢失。

因此,synchronize 选项的作用在开发和调试时非常有用。如果是在生产环境中,就建议不要开启 synchronize 选项了,生产环境中的自动同步可能会导致数据的丢失或损坏,此时应该手动创建和修改数据库结构。

在另一个 ORM 工具 Sequelize 中,也有一个类似的同步功能,叫做 sync 方法,它通过 sequelize 实例调用。它比 TypeORM 的 synchronize更为激进,比如开启强制同步时:

sequelize.sync({
    force: true
})

它会直接删除数据表,再根据模型重新创建数据表,后果就是整张表的数据都没有了。在使用Sequelize 时一定要格外小心。

小结

本文介绍了 TypeORM 中的 synchronize 选项,主要用来在开发阶段方便同步实体和数据表,能带来很大的便利性,在生产阶段要慎用。

标签:选项,实体类,synchronize,数据库,数据表,同步,TypeORM
From: https://blog.51cto.com/u_12382805/9039889

相关文章

  • css 实现一个选项卡按钮边框弯曲平滑
    <Viewclass="tabs"style="display:flex;justify-content:space-between"><Viewclass="tabs-item"style="width:50%"><Buttonclass="tabs-btn":class="0?&#......
  • debezium+kafka实现mysql数据同步(debezium-connector-mysql)
    1.情景展示在企业当中,往往会存在不同数据库之间的表的数据需要保持一致的情况(数据同步)。如何将A库a表的数据同步至B库a表当中呢?(包含:新增、修改和删除)往往不仅仅需要保持数据的一致性,还要保证数据的即时性,即:A库a表的数据发生变化后,B库a表也能立刻同步变化。实时保持两表数据......
  • 华为云耀云服务器L实例-大数据学习-hadoop前置准备3-防火墙、 SElinux 、时间同步等系
     华为云耀云服务器L实例-大数据学习-hadoop前置准备3-防火墙、 SElinux 、时间同步等系统设置  产品官网:https://www.huaweicloud.com/product/hecs-light.html  今天我们采用可靠更安全、智能不卡顿、价优随心用、上手更简单、管理特省心的华为云耀云服务器L实......
  • 金蝶云星空反写规则表结构同步另一个数据库
    一、在BOS找到《反写规则》的表 二、反写规则相关表主表:T_BF_WRITEBACKRULE多语言表:T_BF_WRITEBACKRULE_L 三、创建反写规则,或者已经创建好的反写规则  四、定位反写规则数据通过反写规则的名字在多语言表找到反写规则的唯一标识,两个表的通过唯一标识关联。SELEC......
  • chrony服务与时间服务器同步
    一,chrony服务同步时间1,实验一:第一台机器从阿里云同步时间第二台机器从第一台机器同步时间下载所需要的yum源,并启动服务 yum-yinstallchronysystemctlenablechronydsystemctlstartchronyd 我这里用的是麒麟服务器V0SP3自带有所以不用再次下载[root@serv......
  • ts构建编译选项-tsconfig.json
    概述如果一个目录下存在一个tsconfig.json文件,那么它意味着这个目录是TypeScript项目的根目录。tsconfig.json文件中指定了用来编译这个项目的根文件和编译选项。一个项目可以通过以下方式之一来编译:使用tsconfig.json不带任何输入文件的情况下调用tsc,编译器会从当前目录开......
  • SSAS 同步CUBE 数据库配置完整说明(含添加定时任务)
     SSAS同步数据库步骤说明 二台机器设置相同的windows用户和密码cube_sync_user/***二台SSAS服务>安全性,添加用户 cube_sync_user,具有管理员权限  在SQL服务器配置中心里设置ssas的登录用户为 cube_sync_user   在目标数据库点击同步......
  • 世微AP3266过EMC检测 4-40V 3.6VA 大功率同步降压恒流芯片LED车灯电源驱动线路图
    产品描述   AP3266是一款简单、内置功率管的同步降压恒流芯片,适用于4-40V输入的降压LED恒流驱动芯片。输出功率可达40W,电流3.6A。AP3266可通过调节OVP端口的分压电阻,设定输出空载电压保护,避免高压空载上电瞬间烧坏LED灯。AP3266工作频率固定在130KHZ,具有很好对其他设......
  • 世微AP3266过EMC检测 4-40V 3.6VA 大功率同步降压恒流芯片LED车灯电源驱动线路图
    产品描述   AP3266是一款简单、内置功率管的同步降压恒流芯片,适用于4-40V输入的降压LED恒流驱动芯片。输出功率可达40W,电流3.6A。AP3266可通过调节OVP端口的分压电阻,设定输出空载电压保护,避免高压空载上电瞬间烧坏LED灯。AP3266工作频率固定在130KHZ,具有很好对其他......
  • React Hook 之 Effect :同步与外部系统的数据
    有时组件中的数据需要与外部系统的数据或操作同步,React提供了HookEffect。Effect会在组件渲染后运行一些代码,以便将组件与React之外的某些系统同步,包比如浏览器API、第三方小部件,以及网络请求等。如以下的video播放器的简单加载://声明Effectimport{useEffect,useRef......