新建 NestJS 项目并实现查询
安装 NestJS 并新建 nest 项目
- 安装 node 和 npm
- 使用命令新建项目
nest new xStorageServer
添加文件夹
nest g module attachment
生成附件模块
- 新建文件夹
controllers
services
models
nest g controller attachment --no-spec
nest g service attachment --no-spec
nest g module common
生成公共模块
- 新建文件夹
config
、entities
、enums
增加 TypeORM
npm i @nestjs/typeorm
npm i typeorm
npm i mssql
- 在对应的
app.module.ts
中引入
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| import { TypeOrmModule } from '@nestjs/typeorm';
@Module({ ... imports: [ TypeOrmModule.forRoot({ type: 'mssql', host: 'localhost', port: 3306, username: 'root', password: 'root', database: 'test', entities: [], synchronize: false, }), ], ... })
|
- 在
entities
中新建对应entity
,再添加对应的entity
添加到forFeature
、entities
中
增加配置文件
npm i @nestjs/config
- 新增
.env
文件
- 在对应的 module 中引入
1 2 3 4 5 6 7 8
| import { ConfigModule } from '@nestjs/config';
@Module({ ... imports: [ConfigModule.forRoot()], ... })
|
- 在
config
文件夹中新建config.database.service
、config.service
用来获取配置文件中的参数。
config.service
增加以下内容获取对应的配置文件注册到database
中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| import { registerAs } from "@nestjs/config"; import { ConnectionOptions } from "typeorm";
const databaseConfig = registerAs( "database", (): ConnectionOptions => ({ type: process.env.DATABASE_TYPE, host: process.env.DATABASE_HOST, port: parseInt(process.env.DATABASE_PORT, 10), database: process.env.DATABASE_NAME, instance: process.env.DATABASE_INSTANCE, username: process.env.DATABASE_USERNAME, password: process.env.DATABASE_PASSWORD, schema: process.env.DATABASE_SCHEMA, synchronize: process.env.DATABASE_SYNC === "true", requestTimeout: parseInt(process.env.DATABASE_REQUEST_TIMEOUT, 10), logging: process.env.DATABASE_LOGGING, autoLoadEntities: true, }) );
export default [databaseConfig];
|
config.database.service
增加读取config
的地方
1 2 3 4 5 6 7 8
| @Injectable() export class ConfigDatabaseService implements TypeOrmOptionsFactory { constructor(private readonly configService: ConfigService) {}
createTypeOrmOptions(): TypeOrmModuleOptions { return this.configService.get<ConnectionOptions>("database"); } }
|
1 2 3 4 5 6 7 8 9 10 11
| TypeOrmModule.forRoot({ type: process.env.DATABASE_TYPE, host: process.env.DATABASE_HOST, port: parseInt(process.env.DATABASE_PORT), database: process.env.DATABASE_NAME, username: process.env.DATABASE_USERNAME, password: process.env.DATABASE_PASSWORD, synchronize: process.env.DATABASE_SYNC == 'true', autoLoadEntities: true, }),
|
此时启动项目通过url
就可以查询数据库中的数据了。
然后我们可以根据自己的需求去写service
。
增加 Log 和身份验证
下一期再更新吧 🤣。最近在忙大事等有时间再继续吧 🤷♂️。
后记
因为现在在学习 nest
,所以主要是记录一下学习的过程,很多基础的东西没有详细记录。