最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在NestJS中使用mikro-orm的實現(xiàn)

 更新時間:2026年05月09日 10:22:28   作者:ZJY132  
本文主要介紹了在NestJS中使用mikro-orm,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

什么是ORM?

簡單來說,ORM 是為了讓開發(fā)者在 TypeScript / JavaScript 等語言中,用對象、類、方法的方式操作關系型數據庫,減少直接編寫 SQL 的需求,同時獲得類型提示、實體關系管理、遷移等工程化能力。

MIKRORM

就在上個月,MIKRORM剛剛發(fā)布了7.0版本,這是一次重大的版本更新。這篇文章就介紹了,如何在NestJS中使用最新的MIKORM

使用過程

1.創(chuàng)建NestJS項目

這一步略過,詳情可以參考之前的創(chuàng)建過程

2.安裝

來到MIKRORM的官網,可以看到它提供了多種的數據庫安裝,以postgres為例: 執(zhí)行命令 pnpm add @mikro-orm/core @mikro-orm/nestjs @mikro-orm/postgresql

3.導入配置文件

官網提供的方式是直接在AppModule中導入。

@Module({
  imports: [
    MikroOrmModule.forRoot({
      entities: ['./dist/entities'],
      entitiesTs: ['./src/entities'],
      dbName: 'my-db-name.sqlite3',
    }),
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

但是我認為這樣的方式并不優(yōu)雅,相當于把MikroOrm混雜在了AppModule中,并且這種配置方式只能作用在MIKRORM項目中,無法被Mikro-cli讀取,因此我們這里采用單獨創(chuàng)建MikroOrm配置文件的方式導入。
在根目錄下創(chuàng)建mikro-orm.config.ts,同時寫入:

import { defineConfig } from '@mikro-orm/postgresql';

export default defineConfig({
  dbName: 'sqlite.db',
  debug: true,
});

然后安裝Mikro-cli工具,執(zhí)行命令:pnpm add @mikro-orm/cli -D。為了檢測我們的項目能否識別到MikroORM配置,使用命令npx mikro-orm debug
此時我們會發(fā)現(xiàn),根本檢測不到??!這是V7版本的一大更新!V7版本加載Typescript的工具不再是ts-node而是tsx。之前能檢測到的原因是NestJS項目本身就自帶了ts-node。因此我們再裝一下tsx,執(zhí)行命令pnpm add tsx
為什么要做這個轉變呢?(坑后續(xù)再填,我現(xiàn)在也不知道)

4.修改配置文件

我們需要MikrORM可以自動識別實體類,因此加入

import { defineConfig } from '@mikro-orm/postgres';
export default defineConfig({
  entities: ['dist/**/*.entity.js'],
  entitiesTs: ['src/**/*.entity.ts'],
  // ...
});

5.建立數據庫連接

V7無法自動的讀取環(huán)境變量中的配置了,因此需要手動安裝pnpm add dotenv -D,然后在配置文件中導入import 'dotenv/config'
接下來,在根路徑下創(chuàng)建.env文件,文件內容如下

//根據自己的數據庫名稱等信息填寫
DB_NAME=postgres
DB_USER=postgres
DB_PASSWORD=123456
DB_HOST=localhost
DB_PORT=5432

然后在配置文件中顯示的聲明:

import 'dotenv/config';
import { defineConfig } from '@mikro-orm/postgresql';
import { TsMorphMetadataProvider } from '@mikro-orm/reflection';
export default defineConfig({
  dbName: process.env.DB_NAME,
  password: process.env.DB_PASSWORD,
  port: Number(process.env.DB_PORT),
  host: process.env.DB_HOST,
  entities: ['dist/**/*.entity.js'],
  entitiesTs: ['src/**/*.entity.ts'],
  debug: true,
});

此時再次運行npx mikro-orm debug就會發(fā)現(xiàn)不僅能檢測到我們的配置文件,還可以檢測到實體類,并且數據庫連接也是正常的

6.元數據反射配置

為啥需要它?TypeScript 有一個特性:在編譯成 JavaScript 后,所有的類型信息都會消失。MikroORM 需要知道該在數據庫建什么類型的字段,JS 原生是做不到的。 安裝pnpm add @mikro-orm/reflection

7.實體類上的裝飾器

原本V6,將entity和Mikr-ORM配合起來,只需要在對應字段加上裝飾器即可。但是在V7版本中,需要引入包import { Entity, PrimaryKey, Property } from '@mikro-orm/decorators/legacy';

import { Entity, PrimaryKey, Property } from '@mikro-orm/decorators/legacy';
@Entity()
export class Todo {
  @PrimaryKey()
  id: number;
  @Property()
  title: string;
  @Property({ type: 'text' })
  content: string;
  @Property()
  isCompleted: boolean;
}

到此這篇關于在NestJS中使用mikro-orm的實現(xiàn)的文章就介紹到這了,更多相關NestJS使用mikro-orm內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

锡林浩特市| 德阳市| 清水河县| 孟村| 怀集县| 南安市| 桐乡市| 友谊县| 株洲县| 叙永县| 望城县| 唐山市| 志丹县| 石狮市| 黎城县| 会泽县| 资中县| 修水县| 沭阳县| 昌吉市| 岗巴县| 樟树市| 浙江省| 上思县| 万年县| 华宁县| 娄烦县| 临朐县| 贞丰县| 财经| 嘉兴市| 金堂县| 板桥市| 名山县| 清苑县| 如皋市| 信阳市| 滦平县| 宜兴市| 云霄县| 修武县|