Nest.js 写一个简单的增删改查

这篇文章主要记录了一个简单的增删改查应用,涉及到了MongoDB,Swagger, 以及以express为底层的Nest.js框架。

简单介绍一下用到的工具,swagger就不用说了,MongoDB同样使用docker容器和mongo express进行图形化操作,Nest.js在入门篇我已经详细介绍过了,目前气势如火如荼。

在官方文档中Nest.js推荐连接MongoDB的是:

$ npm install --save mongoose
$ npm install --save-dev @types/mongoose

使用这个方法的话,在创建schema时,官方例子如下:

import * as mongoose from 'mongoose';

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

String等写法是mongoose中的写法,而不是typescript的内容,下面推荐到这款插件typegoose使用类定义模板,对typescript的支持也做的更好:

npm i -s @typegoose/typegoose mongoose
npm i @types/mongoose

最后是用来模板认证的类验证器:

$ npm i --save class-validator class-transformer

 下面拿demo代码来介绍一下:

/*
 * @Date: 2019-09-30 14:33:53
 * @LastEditors: Asen Wang
 * @LastEditTime: 2019-09-30 22:42:48
 * @content: I
 */
import {getModelForClass, prop} from '@typegoose/typegoose'

export class Post {
  @prop()
  title: string
  @prop()
  article: string
  @prop()
  content: string
}

export const PostModel = getModelForClass(Post)

首先这里使用到了三个属性,分别用prop装饰,最后生成文章模型"PostModel"并导出。

import { Body, Controller, Delete, Get, Param, Post, Put } from '@nestjs/common';
import { ApiOperation, ApiUseTags } from '@nestjs/swagger';
import { CreatePostsDto } from './dto';
import { PostModel } from './post.model';

@Controller('posts')
@ApiUseTags('文章网站')
export class PostsController {

  @Get()
  @ApiOperation({ title: '显示文章列表页面' })
  async index() {
    return await PostModel.find()
  }
  ...

在这里,我们引入了创建好的模型,使用起来也很简单,demo所示PostModel.find()就可以输出所有得到的数据。

结合我们入门篇里面的swagger的动态展示的方法,我们可以很简单的操作,比如你可以在数据库中增加一个数据,然后在swagger里面使用get方法得到结果:

Nest.js 写一个简单的增删改查_第1张图片

Nest.js 写一个简单的增删改查_第2张图片

nest.js的优势有很多,比如不用像Flask考虑各种各样的工程结构,蓝图等概念,也方便与swagger进行结合,使用的也是ES6推荐的import/export,而不是require的方法。

下一节我们实现用户验证的接口。

你可能感兴趣的:(Nest.js学习日记)