nestjs项目新建
新学习了nestjs, 之前一直用的python, 现在记录一下
- 安装node.js
- 安装nest脚手架
npm i -g @nestjs/cli // nest-cli脚手架,第一次安装
nest new 项目名称 // 创建新项目
/* 遇到报错 无法加载文件 D:\Program Files\nodejs\node_global\npm.ps1,因为在此系统上禁止运行脚本。
解决:
- get-ExecutionPolicy // 查看权限 输出get-ExecutionPolicy
- Set-ExecutionPolicy -Scope CurrentUser // 设置权限
- RemoteSigned // 输入设置的权限
- get-ExecutionPolicy // 验证权限 RemoteSigned
*/
- 启动项目
进入项目文件夹
npm install
npm run start // 默认 http://127.0.0.1:3000
- 创建路由函数控制器
nest g controller 控制器名称
与flask相同的是 可以在 GET()等方法中定义路径
- 创建service 用于处理 视图与模型之间的数据操作
nest g service 名称
- 创建 依赖注入(类型检查)
用于处理接受参数的类型
- 创建 模块 Moudle
nest g module 名称
当前module注册同一类接口,然后将其注册到主module中
- 操作数据库
typeorm的使用
typeorm的使用
- 安装依赖
npm install --save @nestjs/typeorm typeorm mysql
- 创建文件夹 entity
在不同的app中创建单独的 entity 文件夹
文件夹内的 ts 文件是model类表
- 快速开始
在TypeORM中,数据库table都是从实体中创建。所谓实体其实就是用装饰器@Table装饰的一个model。可以直接从数据库中得到包含数据的实体对象,并且可以通过实体进行数据库表的insert/update/remove。
- 数据库表迁移
(暂时是这样的) 数据库自动创建,会在代码中体现,也就是需要你在代码中使用,启动项目即可. npm run start
- 执行原生sql语句
query - 执行原始SQL查询。
const rawData = await connection.query(`SELECT * FROM USERS`);
- 查询构建器
还不如写sql
QueryBuilder: https://www.bookstack.cn/read/TypeORM-0.2.20-zh/select-query-builder.md
- 实体
就是模型表类,model类, 用@Entity()来标记