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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。