您好,登錄后才能下訂單哦!
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, });
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 {}
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() } }
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() } }
export class CreateCat { readonly name: string; }
import { Document } from 'mongoose' export interface Cat extends Document { readonly name: string; }
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) } }
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的使用方法的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。