1. 创建项目
nest new nest-mongodb-test
2. 添加config
安装 @nestjs/config 包
pnpm i --save @nestjs/config
添加 .env 文件
MONGODB_URI=mongodb://dbtestadmin:123456@localhost:27017/dbtest
创建 config/mongodb.config.ts 文件
import { registerAs } from '@nestjs/config';
export default registerAs('mongodb', () => ({
uri: process.env.MONGODB_URI,
}));
添加 common 模块
nest g module common
修改 common.module.ts
import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import mongodbConfig from 'src/config/mongodb.config';
@Module({
imports: [
ConfigModule.forRoot({
isGlobal: true,
load: [mongodbConfig],
}),
],
})
export class CommonModule {}
3. 添加mongoose
安装依赖包
pnpm i @nestjs/mongoose mongoose
修改 common.module.ts
import { Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { MongooseModule } from '@nestjs/mongoose';
import mongodbConfig from 'src/config/mongodb.config';
@Module({
imports: [
ConfigModule.forRoot({
isGlobal: true,
load: [mongodbConfig],
}),
MongooseModule.forRootAsync({
imports: [ConfigModule],
inject: [ConfigService],
useFactory: async (configService: ConfigService) => ({
...configService.get('mongodb'),
}),
}),
],
})
export class CommonModule {}
4. 添加schema
创建 schema/cat.schema.ts 文件
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { HydratedDocument } from 'mongoose';
export type CatDocument = HydratedDocument<Cat>;
@Schema()
export class Cat {
@Prop()
name: string;
@Prop()
age: number;
@Prop()
breed: string;
}
export const CatSchema = SchemaFactory.createForClass(Cat);
在 common 模块中引入 cat schema
import { Cat, CatSchema } from 'src/schema/cat.schema';
@Module({
imports: [
...
MongooseModule.forFeature([{ name: Cat.name, schema: CatSchema }]),
],
})
export class CommonModule {}