NestJS是基于Node.js构建的Web应用程序框架,它提供了一些独特的特性,比如模块化设计、强类型集成等,使得开发者能够快速高效地构建出高质量的Web应用程序。本文将重点介绍如何在NestJS中连接Oracle数据库,简单易懂,方便开发者操作。
在开始前,我们需要安装`nestjs/typeorm`和`typeorm`这两个模块,它们分别封装了NestJS与TypeORM的集成和TypeORM的功能。安装指令:`npm i @nestjs/typeorm typeorm --save`。
接着,我们需要在main.ts文件中添加以下代码:
import { TypeOrmModule } from '@nestjs/typeorm';
// 此处省略其他import内容
@Module({
imports: [
TypeOrmModule.forRoot({
type: 'oracle', // 数据库类型
host: 'localhost', // 数据库服务器地址
port: 1521, // 数据库服务器端口号
username: 'username', // 数据库账号
password: 'password', // 数据库密码
database: 'database', // 数据库名称
schema: 'schema', // 数据库schema名称
synchronize: true, // 是否自动同步数据库表结构
logging: true, // 是否打印SQL查询日志
entities: [__dirname + '/**/*.entity{.ts,.js}'], // 实体类所在的路径
}),
// 此处省略其他模块
],
})
export class AppModule {}
在以上代码中,我们定义了连接Oracle数据库的相关配置,包括数据库类型、服务器地址、端口号、账号、密码、数据库名称、数据库schema名称等信息。我们可以根据自己的实际情况进行更改。注意,如果需要在代码中使用Entity实体类,需要将实体类所在路径添加到entities数组中。
接下来,我们可以在其他模块中使用TypeORM提供的方法来连接数据库,比如使用Repository查询、插入、删除、更新等操作。以下是一个示例:
import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@Column()
age: number;
}
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,
) {}
async findUserByName(name: string): Promise{
return await this.userRepository.findOne({ name });
}
async createUser(user: User): Promise{
return await this.userRepository.save(user);
}
}
在以上代码中,我们定义了一个User实体类,它对应了数据库中的用户表,有id、name和age三个字段。我们同时定义了一个UserService服务类,它使用@InjectRepository注解注入了User实体类的Repository,在其方法中使用Repository的方法来实现查询、插入等操作。
以上就是在NestJS中连接Oracle数据库的基本步骤,通过使用TypeORM提供的语法,我们可以更加清晰地实现增删改查等操作。希望本文对您有所帮助。