从项目中由浅入深的学习koa 、mongodb(4)

Cicome 2019-07-01

从项目中由浅入深的学习koa 、mongodb(4)

序列文章

从项目中由浅入深的学习vue,微信小程序和快应用 (1)
从项目中由浅入深的学习react (2)
从项目中由浅入深的学习typescript (3)

前言

node.js的出现前端已经可以用js一把梭,从前端写到后台。
本文从后台利用node的框架koa+mongodb实现数据的增删改查和注册接口,前端利用umi + dva +ant-design-pro来实现数据渲染。实现一个小全栈project,就是so-easy

1.效果图

从项目中由浅入深的学习koa 、mongodb(4)
react-koa 全栈项目,欢迎star

2.技术栈

koa:node框架
koa-bodyparser:解析body的中间件
koa-router :解析router的中间件
mongoose :基于mongdodb的数据库框架,操作数据
nodemon:后台服务启动热更新

3.项目目录

├── app // 主项目目录
│ ├── controllrts // 控制器目录(数据处理)
│ │ └── ... // 各个表对应的控制器
│ ├── middleware // 中间件目录
│ │ └── resFormat.js // 格式化返回值
│ ├── models // 表目录(数据模型)
│ │ ├── course.js // 课程表
│ │ └── user.js // 用户表
│ └── utils // 工具库
│ │ ├── formatDate.js // 时间格式化
│ │ └── passport.js // 用户密码加密和验证工具
├── db-template // 数据库导出的 json 文件
├── routes // 路由目录
│ └── api // 接口目录
│ │ ├── course_router.js // 课程相关接口
│ │ └── user_router.js // 用户相关接口
├── app.js // 项目入口
└── config.js // 基础配置信息

4.项目启动步骤

1.git clone
2.安装mongodb:http://www.runoob.com/mongodb...
3.安装 Robomongo是mongodb可视化操作工具 (可选)
4.启动
cd koa-template
npm run start
cd react-template
npm run start

注意:
mongodb启动默认端口号是27017,启动看是否被占用
后端项目端口号是3000,可以在koa-template/config.js里面修改

5.koa的主要API

API作用
new koa()得到koa实例
usekoa的属性,添加中间件
context将 node 的 request 和 response 对象封装到单个对象中,每个请求都将创建一个 Context,通过ctx访问暴露的方法
ctx方法request:请求主体;
response:响应主体;
ctx.cookies.get:获取cookie;
ctx.throw:抛出异常
request属性header:请求头;
method:方法;
url:请求url;
originalUrl请求原始URL;
href:完整URL;
hostname:主机名;
type:请求头类型;
response属性header:响应头;
status:状态,未设置默认为200或204;
body:响应主体,string(提示信息) Buffer Stream(流) Object Array JSON-字符串化ull 无内容响应;
get:获取响应头字段;
set:设置响应头;
append:添加响应头;
type:响应类型;
lastModified:返回为 Date, 如果存在;
etag:设置缓存

6.koa-router主要API

API作用
getget方法
postpost方法
patchpatch方法
deletedelete方法
prefix配置公共路由路径
use将路由分层,同一个实例router中可以配置成不同模块
ctx.params获取动态路由参数
fs分割文件

7.mongoose主要API

API作用
Schema数据模式,表结构的定义;每个schema会映射到mongodb中的一个collection,它不具备操作数据库的能力
modelschema生成的模型,可以对数据库的操作

model的操作database方法

API方法
create/save创建
remove移除
delete删除一个
deleteMany删除多个
find查找
findById通过id查找
findOne找到一个
count匹配文档数量
update更新
updateOne更新一个
updateMany更新多个
findOneAndUpdate找到一个并更新
findByIdAndUpdate通过id查找并更新
findOneAndRemove找到一个并移除
replaceOne替换一个
watch监听变化

query查询API

API作用
where指定一个 path
equals等于
or
nor不是
gt大于
lt小于
size大小
exists存在
within在什么之内

注:Query是通过Model.find()来实例化
aggregate(聚合)API

API作用
append追加
addFields追加文件
limit限制大小
sort排序

注:aggregate=Model.aggregate()

更多详细API,请戳

8.react项目详情

从项目中由浅入深的学习react

9.总结

一个koa项目就是从koa-bodyparser来解析body,koa-router来分发和处理接口,mongose来操作database。入门就是so-easy!

相关推荐