nestjs引入mongodb

2,724 阅读1分钟

Mongodb

安装

npm install --save @nestjs/mongoose mongoose
nest g module cats
nest g service cats
nest g controller cats

app.module.ts

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { MongooseModule } from '@nestjs/mongoose';
@Module({
  //引入mongodb并链接
  imports: [CatsModule,
    MongooseModule.forRoot('mongodb://sujiayizu.cn/nest')],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule { }

定义schema

Cats.schema.ts

import * as mongoose from 'mongoose';
//定义mongodb的数据模型
export const CatScheme = new mongoose.Schema({
  name: String,
  age: Number,
  breed: String,
});

cats.module.ts

import { Module } from '@nestjs/common';
import { CatsService } from './cats.service';
import { CatsController } from './cats.controller';
import { MongooseModule } from '@nestjs/mongoose';
import { CatShema } from './cat.schema';

@Module({
  providers: [CatsService],
  controllers: [CatsController],
  //add
  imports: [MongooseModule.forFeature(
    [{ name: 'Cat', schema: CatShema }],
  )],
})
export class CatsModule { }

cat.interface.ts

import { Document } from 'mongoose';
export interface Cat extends Document {
  readonly name: string;
  readonly age: number;
  readonly breed: string;
}

create-cat.dto.ts

import { Document } from 'mongoose';
export interface Cat extends Document {
  readonly name: string;
  readonly age: number;
  readonly breed: string;
}

cats.service.ts

import { Injectable } from '@nestjs/common';
import { InjectModel } from '@nestjs/mongoose';
import { Cat } from './interfaces/cat.interface';
import { Model } from 'mongoose';
import { CreateCatDto } from './dto/create-cat.dto';

@Injectable()
export class CatsService {
  constructor(@InjectModel('Cat') private readonly catModel: Model<Cat>) {

  }
  //创建cats
  async create(createCatDto: CreateCatDto): Promise<Cat> {
    const createdCat = new this.catModel(createCatDto);
    return await createdCat.save();
  }
  //获取所有cats&
  async findAll(): Promise<Cat[]> {
    return await this.catModel.find().exec();
  }
}

cats.controller.ts

import { Controller, Post, Body, Get } from '@nestjs/common';
import { CatsService } from './cats.service';
import { create } from 'domain';
import { CreateCatDto } from './dto/create-cat.dto';

@Controller('cats')
export class CatsController {
  constructor(private readonly catService: CatsService) {

  }
  @Get()
  getAll() {
    return this.catService.findAll();
  }
  @Post()
  create(@Body() createCatDto: CreateCatDto) {
    this.catService.create(createCatDto);
  }
}

测试