使用 SQLite 数据库,集成到 NestJS
项目中与 PostgreSQL 的方式非常相似。Prisma
支持多种数据库,包括 SQLite,只需要在 Prisma
配置中修改数据库连接字符串和一些数据库设置。
步骤:使用 SQLite 配置 Prisma 和 NestJS
1. 安装依赖
首先,安装 Prisma
和 @prisma/client
,并且确保你安装了 SQLite 驱动。
# 安装 Prisma 和相关依赖
npm install @prisma/client
# 安装 Prisma CLI (用于生成 Prisma 文件)
npm install prisma --save-dev
2. 初始化 Prisma
接下来,初始化 Prisma,生成相关的文件(prisma/schema.prisma
)。
npx prisma init
这会在项目根目录下创建一个 prisma
文件夹,并包含一个 schema.prisma
文件。
3. 配置 schema.prisma
文件
在 prisma/schema.prisma
文件中,设置 SQLite 数据库的连接信息。可以使用本地文件作为 SQLite 数据库。
// prisma/schema.prisma
datasource db {
provider = "sqlite"
url = env("DATABASE_URL") // 从环境变量中读取数据库连接字符串
}
generator client {
provider = "prisma-client-js"
}
model User {
id Int @id @default(autoincrement())
name String
email String @unique
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
在 .env
文件中设置 DATABASE_URL
来指定 SQLite 数据库文件的路径:
DATABASE_URL="file:./dev.db" # SQLite 数据库文件
4. 生成 Prisma Client
配置了 schema.prisma
后,需要生成 Prisma Client 以便在代码中使用。
npx prisma generate
5. 创建 Prisma Service
接下来,创建一个 PrismaService
来封装 Prisma Client。将 PrismaService
用作 NestJS
中的服务,并注入到其他模块中进行数据库操作。
// src/prisma/prisma.service.ts
import {
Injectable } from '@nestjs/common';
import {
PrismaClient } from '@prisma/client';
@Injectable()
export class PrismaService extends PrismaClient {
constructor() {
super();
}
}
6. 创建 Prisma Module
将 PrismaService
提供为一个模块,以便在其他模块中使用它。
// src/prisma/prisma.module.ts
import {
Module } from '@nestjs/common';
import {
PrismaService } from './prisma.service';
@Module({
providers: [PrismaService],
exports: [PrismaService], // 导出 PrismaService 以便其他模块使用
})
export class PrismaModule {
}