nestjs配置sqlite数据库
LYT
首页
分类
标签
项目
留言
友链
关于

nestjs配置sqlite数据库

2024年12月19日14时16分
2024年12月19日14时19分
node
node sqlite nestjs
浏览量:
总浏览量:
0

NestJS 是一个用于构建高效、可扩展的 Node.js 应用的框架。要配置 SQLite 数据库,你可以使用 TypeORM,这是一个ORM(对象关系映射)库,支持多种数据库,包括 SQLite。 以下是配置 NestJS 项目以使用 SQLite 的步骤:

1. 安装依赖

首先,你需要安装 typeorm 和 sqlite3 依赖。

npm install @nestjs/typeorm typeorm sqlite3

2. 配置数据库模块

创建一个数据库模块来配置 TypeORM。

// src/database.module.ts import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; @Module({ imports: [ TypeOrmModule.forRoot({ type: 'sqlite', database: 'data.db', // 数据库文件路径 entities: [__dirname + '/../**/*.entity{.ts,.js}'], // 实体文件路径 synchronize: true, // 根据实体自动创建数据库表 }), ], }) export class DatabaseModule {}

3. 创建实体

创建实体类来映射数据库表。

// src/user.entity.ts import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm'; @Entity() export class User { @PrimaryGeneratedColumn() id: number; @Column() name: string; @Column() age: number; }

4. 导入数据库模块

在你的主模块或其他模块中导入数据库模块。

// src/app.module.ts import { Module } from '@nestjs/common'; import { DatabaseModule } from './database.module'; import { User } from './user.entity'; @Module({ imports: [DatabaseModule], controllers: [], providers: [], }) export class AppModule {}

5. 使用数据库服务

创建服务来使用数据库。

// src/user.service.ts import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { User } from './user.entity'; @Injectable() export class UserService { constructor( @InjectRepository(User) private userRepository: Repository<User>, ) {} async findAll(): Promise<User[]> { return this.userRepository.find(); } async create(name: string, age: number): Promise<User> { const user = new User(); user.name = name; user.age = age; return this.userRepository.save(user); } }

6. 创建控制器

创建控制器来处理请求。

// src/user.controller.ts import { Controller, Get, Post, Body } from '@nestjs/common'; import { UserService } from './user.service'; import { User } from './user.entity'; @Controller('users') export class UserController { constructor(private readonly userService: UserService) {} @Get() async findAll(): Promise<User[]> { return this.userService.findAll(); } @Post() async create(@Body() user: User): Promise<User> { return this.userService.create(user.name, user.age); } }

7. 启动应用

确保你的主文件(如 main.ts)正确地启动了 NestJS 应用。

// src/main.ts import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; async function bootstrap() { const app = await NestFactory.create(AppModule); await app.listen(3000); } bootstrap();

配置mysql同理

安装依赖

npm install @nestjs/typeorm typeorm mysql

配置数据库模块

// src/database.module.ts import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; @Module({ imports: [ TypeOrmModule.forRoot({ type: 'mysql', host: 'localhost', // MySQL服务器地址 port: 3306, // MySQL服务器端口 username: 'your_username', // MySQL用户名 password: 'your_password', // MySQL密码 database: 'your_database', // 数据库名 entities: [__dirname + '/../**/*.entity{.ts,.js}'], // 实体文件路径 synchronize: true, // 根据实体自动创建数据库表,生产环境建议设置为false logging: true, // 启用日志 }), ], }) export class DatabaseModule {}