周六、日
下载安装mongodb:
一般下载的为社区版 Mongodb官网.
1.下载安装压缩包
2.开始安装,点击next
3.点击complete
Mongodb一般放在 C:\Program Files 路径下
点击next,然后等待安装。
配置Mongodb
1.打开本电脑的高级系统设置,配置Mongodb的环境,在系统变量里点击path,
2.点击新建,把bin的路径复制过来,点击确认。
启动Mongodb
1.输入命令,
mongod.exe
创建数据目录:
MongoDB将数据目录存储在db目录下。但是这个数据目录不会主动创建,我们在安装完成后需要创建它。
我的目录是C:\Program Files\MongoDB\data\db,其中db文件夹也需要创建,其不会自动生成
方法:手动创建文件夹:C:\Program Files\MongoDB\data\db
运行命令:
mongod.exe --dbpath C:\Program Files\MongoDB\data\db
检查是否可以连接
在浏览器输入http://localhost:27017 (27017是mongodb的端口号)查看,若显示:
配置本地windows mongodb 服务
1.先在data文件下创建一个新文件夹log(用来存放日志文件)
2.创建.config配置文件
在Mongodb新建配置文件mongo.config
先创建一个mongo.txt文件,再打开,点击”另存为“,将底下的文件类型更改为”全部类型“,并更改文件名称为mongo.config。
这样就可以创建一个config的配置文件了。
3.用记事本打开mongo.config ,并输入:
dbpath=C:\Program Files\MongoDB\data\db
logpath=C:\Program Files\MongoDB\data\log\mongo.log
4.配置windows服务:
cmd先跳转到 C:\Program Files\MongoDB\Server\5.0\bin目录下。
输入:
mongod --config "C:\Program Files\MongoDB\mongo.config" --install --serviceName "MongoDB"
即根据刚创建的mongo.config配置文件安装服务,名称为MongoDB。
5.打开计算机管理,查看服务列表
至此安装完成
周一
Typegoose
我们已经把接口架构搭建好了,接下来用数据库保存帖子,创建与保存数据,这里将会用到Typegoose,
Typegoose: link.
里面有关于官方文档的解说
import { prop, getModelForClass } from '@typegoose/typegoose';
import * as mongoose from 'mongoose';
class User { //user表结构
@prop() //装饰器,表示下面的属性定义为mongoose的字段
public name?: string;
@prop({ type: () => [String] })
public jobs?: string[];
}
底层依旧是mongoose,上层用了面向对象的方式。
点击红框里的网址,里面可以参考有关版本的一些教程
1.安装语法,在终端啊输入:
npm i @typegoose/typegoose
2.安装好之后,我们需要在入口处(main.ts)连接数据库
3.连接好后,我们需要建立模型文件post.model.ts
import { getModelForClass, prop } from '@typegoose/typegoose'
export class Post{
@prop()
title:string
@prop()
conent:string
}
export const PostModel = getModelForClass(Post)
注释:
1.定义表结构:两个字段,title和conent,
@prop表示字段定义,在()里可以传递参数,比如default、set、select等
2.定义模型:用getModelForClass的方法,传进去表结构的类,Post Model就成为一个帖子模型。
周二
查看帖子
1.定义好模型之后,我们需要打开posts.controller.ts,将帖子列表换为模型的查询,需要用到await ,然后方式是异步的,
2.当框架定义好之后,我们只需要把内容改为数据库的查询就可以了,接口框架不变,
创建帖子
1.我们需要打开posts.controller.ts,将创建帖子换为模型的创建,需要用到await ,然后方式是异步的,
@Post()
@ApiOperation({summary:'创建帖子'})
async create(@Body()createPostDto:CreatePostDto){
await PostModel.create(createPostDto)
return {
success:true
}
}
2.在http://localhost:3000/api-docs中,点击创建帖子,执行之后,返回了如下信息:
3.点击帖子列表,刷新之后,会发现新建了数据
4.因为之前有数据建立,为了区别,在posts.controller.ts中,修改代码:建立实例
5.刷新之后,发现内容已经更改:
6.有了实例之后,点击执行,刷新帖子列表之后,发现新数据
7.打开http://localhost:3000/posts后,得到如下结果:
说明运行成功
周三
Get数据
在帖子详情中,复制得到的真实id,可以取得数据库中的数据,修改代码:
代码如下:
@Get(":id")
@ApiOperation({summary:'帖子详情'})
async detail(@Param('id')id:string){
return await PostModel.findById(id)
}
复制得到的真实id例如
执行后,从数据库中取得:
Update数据
在编辑帖子中,输入id,修改title和content的内容:
修改代码:
点击excute后,可以发现在帖子列表中存在更新
删除数据
在删除帖子中,修改代码,用mongoose语言
async remove(@Param('id')id: string){
await PostModel.findByIdAndDelete(id)
例如,删除此条数据:
在delete里面复制id信息,点击执行
再次查看帖子列表:再无此条数据
周四
管道
从客户端到服务端,Get某个服务器端点的时候,要预先通过管道,我们需要加入各种东西让请求一步步通过管道,包括验证管道、数据格式转换的管道之类,最终到达接口。
而从接口返回客户端时候,通过一层层的过滤器,再到达客户端
1.在main里面开启全局验证:确保信息为必填选项:
使用全局管道:
2.终端提醒,我们需要安装一些包
npm i class-validator //用于验证
npm i class-transformer //用于数据格式转换
安装之后,程序正常运行
3.声明符合的验证;
引入class-validator包
import{ IsNotEmpty } from'class-validator'
IsNotEmpty声明title不为空,如果为空的话,会返回消息:填写标题
@IsNotEmpty({message:'请填写标题'})
4.创建帖子中,删除title并运行
发现报错:
下周计划
1.周末跑通一遍官方教程
2.整理信息,开始构建自己的项目