安装
nest new project-name
目录解释
dto目录,配合
class-validator
进行参数验证schemas目录,mongodb映射 文档
interfaces目录,接口
common目录,通用
ts@Schema() export class Cat {} // 默认对应数据库中的 cats集合 // 若要自定义集合名称 @Schema({ connection: 'custom_name' })
配置mongodb数据库
安装相关包
读取配置文件
pnpm add -S @nestjs/config
根目录下创建
.env .prod.env
文件,添加环境变量app.moudle.ts
中使用tsimport { ConfigMoudle } from '@nestjs/config' @Module({ imports: [ ConfigModule.forRoot({ envFilePath: process.env.NODE_ENV !== 'production'?'.env.production' : '.env', isGlobal: true // 全局使用 }) ], controllers: [AppController], providers: [AppService], }) export class AppModule {}
安装
pnpm add @nestjs/mongoose mongoose
app.module.ts
中使用ts@Module({ imports: [ ConfigModule.forRoot({ envFilePath: process.env.NODE_ENV !== 'production' ? '.env.production' : '.env', isGlobal: true // 全局使用 }), MongooseModule.forRoot( `mongodb://${process.env.DATABASE_USER}:${ process.env.DATABASE_PASS }@${process.env.DATABASE_HOST}:${ process.env.DATABASE_PORT }/${process.env.DATABASE_NAME}?authSource=${process.env.DATABASE_NAME}`, { connectionName: 'prankSound', }, ), ], controllers: [AppController], providers: [AppService], })
文档生成
安装swagger
pnpm add @nestjs/swagger
main.ts
中初始化tsimport { SwaggerModule, DocumentBuilder } from '@nestjs/swagger'; async function bootstrap() { const app = await NestFactory.create(AppModule); // 设置swagger文档 if (process.env.SWAGGER_ENABLED === 'true') { const config = new DocumentBuilder() .setTitle('API-SERVER') .setDescription('接口文档') .setVersion('1.0') .addBearerAuth() .build(); const document = SwaggerModule.createDocument(app, config); SwaggerModule.setup('docs', app, document); } await app.listen(process.env.PORT ?? 3000); }