[VueJsDev] 目录列表

https://www.cnblogs.com/pengchenggang/p/17037320.html

NestJS 学习内容

NestJS 学习总结

Step. 1: 全局安装包

pnpm add -g @nestjs/cli nodemon ts-node
nest new nestjs-api

Step. 2: 安装相关依赖

pnpm add prisma-binding @prisma/client mockjs @nestjs/config class-validator class-transformer argon2 @nestjs/passport passport passport-local @nestjs/jwt passport-jwt lodash multer dayjs express redis @nestjs/throttler

pnpm add -D prisma typescript @types/node @types/mockjs @nestjs/mapped-types @types/passport-local @types/passport-jwt @types/express @types/lodash @types/multer @types/node

Step. 3: prettierrc 配置文件

{
"arrowParens": "always",
"bracketSameLine": true,
"bracketSpacing": true,
"embeddedLanguageFormatting": "auto",
"htmlWhitespaceSensitivity": "css",
"insertPragma": false,
"jsxSingleQuote": false,
"printWidth": 120,
"proseWrap": "never",
"quoteProps": "as-needed",
"requirePragma": false,
"semi": false,
"singleQuote": true,
"tabWidth": 2,
"trailingComma": "all",
"useTabs": false,
"vueIndentScriptAndStyle": false,
"singleAttributePerLine": false
}

Step. 4: package.json 修改

-"start:dev": "nest start --watch",
+"dev": "nest start --watch",
  • 这样就能用快捷命令 d
  • http://localhost:3000

Step. 5: nest-cli.json 修改

{
"$schema": "https://json.schemastore.org/nest-cli",
"collection": "@nestjs/schematics",
"sourceRoot": "src",
"generateOptions": {
"spec": false
}
}
  • 使用命令 nest g res article
  • 或者用简写 n g res article (需配置快捷命令)
  • http://localhost:3000/article
  • 一个新接口就写好了 rest 方式

Step. 6: 数据库连接

npx prisma init
  • 会创建.env文件与prisma文件夹
  • .env 修改数据库连接
DATABASE_URL="mysql://root:admin888@127.0.0.1:3306/nest"

Step. 7: 定义数据库结构

  • npx prisma db pull 这条命令可以按照数据库生成schema.prisma文件
  • 下面我们按照写配置文件 生成数据的方式进行
  • prisman/schema.prisma
// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema generator client {
provider = "prisma-client-js"
} datasource db {
provider = "mysql" // 这里改成mysql了
url = env("DATABASE_URL")
} model article {
id Int @id @default(autoincrement()) @db.UnsignedInt()
title String
content String @db.Text()
}
  • prisma 插件记得装一下,就有颜色提示了

Step. 8: 生成迁移

npx prisma migrate dev
  • 根据定义生成迁移文件
  • 执行新的迁移文件修改数据表
  • 生成 Prisma Client

Step. 9: 重置数据库

npx prisma migrate reset
  • 删除数据库
  • 创建同名数据库
  • 执行所有迁移文件
  • 运行 seed 数据填充

Step. 10: 数据填充

首先在package.json中定义命令,后面可以调用 npx prisma db seed 命令实现填充

{
"name": "nest",
...
"prisma": {
"seed": "ts-node prisma/seed.ts"
},
"scripts": {
...
}
}
  • 新建 prisma/seed.ts
import { PrismaClient } from '@prisma/client'
import { Random } from 'mockjs'
const prisma = new PrismaClient()
async function run() {
for (let i = 1; i <= 5; i++) {
await prisma.article.create({
data: {
title: Random.ctitle(3, 6),
content:Random.cparagraph(30, 50),
},
})
}
} run()
  • 执行 npx prisma db seed 填充数据

Step. 11: eslint 一个内联报错

Delete eslintprettier/prettier

  • 原因就是 win/apple/linux 系统的回车 有的是 \r 有的是 \n 有的是 \n\r 导致的
  • 解决方案
// .eslintrc.js
rules: {
"endOfLine":"auto",
},

Step. 12: 添加prisma数据库读取工具包

全局的一个数据库读取工具包

n g mo prisma
n g s prisma
  • 代码
// src/prisma/prisma.module.ts
import { Global, Module } from '@nestjs/common';
import { PrismaService } from './prisma.service'; @Global()
@Module({
providers: [PrismaService],
exports: [PrismaService],
})
export class PrismaModule {}
  • 代码
// src/prisma/prisma.service.ts
import { PrismaClient } from '@prisma/client';
import { Injectable } from '@nestjs/common'; @Injectable()
export class PrismaService extends PrismaClient {
constructor() {
super({
log: ['query'],
});
}
}

Step. 12: 添加 DTO 数据格式

ts 最大的特点就是要有type,所以对于article来说,就要有它对应的DTO

  • 数据传输对象(DTO)(Data Transfer Object),这个就是入参的类型
  • model 就是数据模型,对应数据库字段 大概这意思
// src\article\dto\create-article.dto.ts
export class CreateArticleDto {
title: string
content: string
}
  • 验证一般都放在DTO这里进行验证

Step. 13: 添加控制器-路由设置

先在控制器添加上路由先能访问

import { Body, Controller, Delete, Get, Param, Patch, Post } from '@nestjs/common'
import { ArticleService } from './article.service'
import { CreateArticleDto } from './dto/create-article.dto'
import { UpdateArticleDto } from './dto/update-article.dto' @Controller('article')
export class ArticleController {
constructor(private readonly articleService: ArticleService) {} @Post()
create(@Body() createArticleDto: CreateArticleDto) {
return this.articleService.create(createArticleDto)
} // @Post('findAll')
@Get('findAll')
findAll() {
return this.articleService.findAll()
} @Post('findOne')
findOne(@Body() dto: UpdateArticleDto) {
console.info('findOne dto', dto)
return this.articleService.findOne(dto)
} }

Step. 14: 添加控制器的服务Servce

控制器调用服务,服务里面写相关数据的内容

import { Injectable } from '@nestjs/common'
import { PrismaService } from 'src/prisma/prisma.service'
import { CreateArticleDto } from './dto/create-article.dto'
import { UpdateArticleDto } from './dto/update-article.dto' @Injectable()
export class ArticleService {
constructor(private prisma: PrismaService) {}
create(createArticleDto: CreateArticleDto) {
return 'This action adds a new article'
} // findAll() {
// return `This action returns all article`
// }
async findAll() {
const articles = await this.prisma.article.findMany()
return {
data: articles,
}
} async findOne(dto: UpdateArticleDto) {
// return `This action returns a #${dto.id} article`
const article = await this.prisma.article.findMany({
where: {
id: +dto.id,
}
})
return {
data: article
}
}
}

...

[VueJsDev] 其他知识 - NestJS 学习内容的更多相关文章

  1. web前端开发学习内容

    应该 具备的 知识技能 :懂web标准,熟练手写 xhtml css3 并符合 符合w3c标准                       代码能 兼容主流浏览器.ie6.7.8.9 ff 等.    ...

  2. html/css 盒子布局 Margin 、Padding 、border 以及 清除浮动的知识 (学习HTML过程中的小记录)

    html/css  盒子布局 Margin .Padding .border 以及 清除浮动的知识 (学习HTML过程中的小记录) 作者:王可利(Star·星星) width     是"宽 ...

  3. 2.Freshman阶段学习内容的确定

    我刷知乎.在知乎上答题的程序员,不是很牛逼就是更牛逼,说起各种系统.各种系统的各种版本.各种语言.数据库.算法.IT届的各种圣战都有板有眼.信手拈来.头头是道,不得不服.这导致了一些非常严重的问题:我 ...

  4. 第一天上午——HTML网页基础知识以及相关内容

    今天上午学习了HTML基础知识以及相关内容,还有DW的基本使用方法. HTML(HyperText Markup Language):超文本标记语言,超文本:网页中除了包含文本文字之外,还包含了图片, ...

  5. JAVA第十周《网络编程》学习内容总结

    JAVA第十周<网络编程>学习内容总结 学习内容总结 1.初听到网络编程四个字可能会觉得很困难,实际上网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据,把数据发送到指定的位置, ...

  6. # 20145118 《Java程序设计》第4周学习总结 ## 教材学习内容总结

    20145118 <Java程序设计>第4周学习总结 教材学习内容总结 本周内容为教材第六.七两张内容. 重点概念: 1.面向对象中,子类继承父类,避免重复的行为定义,是一种简化操作. 2 ...

  7. 20155328 2016-2017-2 《Java程序设计》 第十周学习内容总结

    20155328 2016-2017-2 <Java程序设计>第十周学习总结 教材学习内容总结 JAVA和ANDROID开发学习指南 第22章 网络概览 两台计算机用于通信的语言叫做&qu ...

  8. 3.Freshman阶段学习内容的确定

    我刷知乎.在知乎上答题的程序员,不是很牛逼就是更牛逼,说起各种系统.各种系统的各种版本.各种语言.数据库.算法.IT届的各种圣战都有板有眼.信手拈来.头头是道,不得不服.这导致了一些非常严重的问题:我 ...

  9. STM32学习内容和计划

    一.STM32学习内容(流程) 1.学习STM32开发流程 ①MDK使用.建立工程.调试等 ②库开发方法 2.学习STM32常用外设开发 ①GPIO ②中断 ③定时器 ④串口 ⑤CAN 3.学习STM ...

  10. u-boot代码学习内容

    前言  u-boot代码庞大,不可能全部细读,只能有选择的读部分代码.在读代码之前,根据韦东山教材,关于代码学习内容和深度做以下预先划定. 一.Makefile.mkconfig.config.mk等 ...

随机推荐

  1. 7.5 Windows驱动开发:监控Register注册表回调

    在笔者前一篇文章<内核枚举Registry注册表回调>中实现了对注册表的枚举,本章将实现对注册表的监控,不同于32位系统在64位系统中,微软为我们提供了两个针对注册表的专用内核监控函数,通 ...

  2. 10.5 认识XEDParse汇编引擎

    XEDParse 是一款开源的x86指令编码库,该库用于将MASM语法的汇编指令级转换为对等的机器码,并以XED格式输出,目前该库支持x86.x64平台下的汇编编码,XEDParse的特点是高效.准确 ...

  3. Android 开机流程介绍

    目录 一.目的 二.环境 三.相关概念 3.1 Android平台架构 3.2 Android启动架构 3.3 zImage 3.4 RAMDISK 3.5 RC文件 四.详细设计 4.1 Boot ...

  4. CF1515F Phoenix and Earthquake 题解

    题目链接:CF 或者 洛谷 首先基于一个事实,答案一定是生成树,显然,每次我们都需要连边,每次都会 \(-x\),那么一共会减少 \((n-1)\times x\),很显然的一个必要条件为: \[\s ...

  5. MarkDown文件插入公式(常用格式)

    1.插入公式 markdown支持插入公式,书写公式需要按照特定格式来写,涉及到希腊字母.符号.角标.基本语法等内容需要熟悉, 1.1 句中插入公式 表达式前后插入$即可 ,比如$\alpha$,显示 ...

  6. .NET Core开发实战(第5课:依赖注入:良好架构的起点)--学习笔记(下)

    05 | 依赖注入:良好架构的起点 注册完毕之后,想替换某些组件的某些部分时,可以使用 Replace 和 RemoveAll services.AddSingleton<IOrderServi ...

  7. JS Leetcode 304. 二维区域和检索 - 矩阵不可变,彻底弄懂二维数组前缀和

    壹 ❀ 引 我在JS LeetCode 303. 区域和检索 - 数组不可变,一维数组的前缀和一文中,记录了一维数组求区间合的解题思路,正好还有一题的升级版,题目来自leetcode304. 二维区域 ...

  8. 2023牛客暑期多校训练营6 ABCEG

    比赛链接 A 题解 方法一 知识点:并查集,树形dp,背包dp. 因为需要路径中的最大值,因此考虑按边权从小到大加入图中,保证通过这条边产生贡献的点对已经全部出现. 在加边的同时进行树上背包,答案存在 ...

  9. 【C#】基于JsonConvert解析Json数据

    1 解析字典 ​ 1)解析为 JObject private void ParseJson() { // 解析为JObject string jsonStr = "{'name': 'zha ...

  10. pico命令

    pico命令 pico是一个简单易用.以显示导向为主的文字编辑程序,具有pine电子邮件编写器的风格.在现代Linux系统上,nano即pico的GNU版本是默认安装的,在使用上和pico一模一样. ...