在Nestjs中使用mongoose

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 {}

5. 运行项目

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值