中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

nestjs-mongodb-demo中cats.controller.ts的使用方法

發布時間:2021-09-29 11:25:54 來源:億速云 閱讀:153 作者:柒染 欄目:大數據

nestjs-mongodb-demo中cats.controller.ts的使用方法,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

// sec/app.module.ts

import { Module }from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';

import { MongooseModule } from '@nestjs/mongoose'
import { CatsModule } from './cats/cats.module';

@Module({
  imports: [
    MongooseModule.forRoot('mongodb://localhost/ajanuw', { useNewUrlParser: true }), // ajanuw數據庫的名字
    CatsModule
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

模型注入

// src/cats/schemas/cat.schema.ts

import * as mongoose from 'mongoose';

export const CatSchema = new mongoose.Schema({
  name: String,
});

cats.module.ts 中使用

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

@Module({
  imports: [
    MongooseModule.forFeature([ // Schema 定義數據庫的結構
      { name: 'Cat', schema: CatSchema } // name: 'Cat'  cats 表, Cat 必須和service時@InjectModel('Cat')的一樣
    ])
  ],
  controllers: [CatsController],
  providers: [CatsService]
})
export class CatsModule {}

cats.service.ts 中注入 CatModel

import { Injectable } from '@nestjs/common';
import { Model } from 'mongoose'
import { InjectModel } from '@nestjs/mongoose'

import { Cat } from './interfaces/cat.interface'
import { CreateCat } from './class/create-cat.class'

const l = console.log
@Injectable()
export class CatsService {
  constructor(
    @InjectModel('Cat') private readonly catModel: Model<Cat>  // Model 可以操作數據表
  ){}

  async create(cat: CreateCat): Promise<Cat> {
    const createdCat = new this.catModel(cat)
    l(createdCat) // { _id: 5b8e2faba163251c9c769e6e, name: '小黑貓' }  返回一個docment
    return await createdCat.save()  // 保存 document
    //  return this.catModel.insertMany(cat)
  }

  async findAll(): Promise<Cat[]> {
    return await this.catModel.find().exec()
  }
}

cats.controller.ts

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

const l = console.log;
@Controller('cats')
export class CatsController {

  constructor(
    private readonly catsServer: CatsService
  ){}

  @Post()
  create(@Body() cat: CreateCat){
     this.catsServer.create(cat);
  }

  @Get()
  findAll(){
    return this.catsServer.findAll()
  }
}

CreateCat

export class CreateCat {
  readonly name: string;
}

Cat

import { Document } from 'mongoose'

export interface Cat extends Document {
  readonly name: string;
}

完整的 cats.controller.ts

import { Controller, Get, Post, Body, Query, Delete } from '@nestjs/common';
import { CatsService } from './cats.service'
import { CreateCat } from './class/create-cat.class'

const l = console.log;
@Controller('cats')
export class CatsController {
  constructor(
    private readonly catsServer: CatsService
  ){}
  @Post()
  create(@Body() cat: CreateCat){
     this.catsServer.create(cat);
  }

  @Get()
  findAll(){
    return this.catsServer.findAll()
  }

  @Get('find-cat')
  findCat(@Query('catName') catName){
    return this.catsServer.findCat(catName)
  }

  @Post('update-cat-name')
  updateCatName(@Body() body){
    this.catsServer.updateCatName(body)
  }

  @Delete('remove-cat')
  removeCat(@Body('catName') catName){
    this.catsServer.removeCat(catName)
  }
}

cats.service.ts

import {
  Injectable,
  HttpException,
  HttpStatus
} from '@nestjs/common';
import {
  Model
} from 'mongoose'
import {
  InjectModel
} from '@nestjs/mongoose'
import {
  Cat
} from './interfaces/cat.interface'
import {
  CreateCat
} from './class/create-cat.class'

const l = console.log;
@Injectable()
export class CatsService {
  constructor(
    @InjectModel('Cat') private readonly catModel: Model < Cat >
  ) {}

  async create(cat: CreateCat): Promise < Cat > {
    // const createdCat = new this.catModel(cat)
    // return await createdCat.save()
    return this.catModel.insertMany(cat)
  }

  async findAll(): Promise < Cat[] > {
    return await this.catModel.find().exec()
  }

  async findCat(name: string): Promise < Cat[] > {
    if (!name) {
      throw new HttpException('請求參數不正確.', HttpStatus.FORBIDDEN)
    }
    let resCat = this.catModel.find({
      name
    })
    return resCat
  }

  async updateCatName({name, newName}) {
    if(!name || !newName){
      throw new HttpException('請求參數不正確.', HttpStatus.FORBIDDEN)
    }

     const where = {
        name: name
    };
    const update = {
        $set: {
            name: newName
        }
    };
    return await this.catModel.updateOne(where, update);   
  }

  async removeCat(catName){
    l(catName)
    if(!catName){
      throw new HttpException('請求參數不正確.', HttpStatus.FORBIDDEN)
    }
    return await this.catModel.deleteOne({name: catName})
  }
}

看完上述內容,你們掌握nestjs-mongodb-demo中cats.controller.ts的使用方法的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兴业县| 河间市| 西宁市| 长兴县| 资溪县| 文化| 耿马| 新竹县| 东莞市| 吴忠市| 灌南县| 洱源县| 吉安市| 河源市| 宝鸡市| 安新县| 九江市| 瑞金市| 综艺| 和平县| 巨野县| 武胜县| 会理县| 米脂县| 丽江市| 察雅县| 彭山县| 乐清市| 无棣县| 卢龙县| 玛沁县| 赣州市| 保亭| 仁化县| 河间市| 德格县| 双城市| 南投市| 临安市| 谢通门县| 略阳县|