mern项目
不同点:用到了mongoose.Schema实例的pre方法用于在文档保存之前(save
)执行自定义操作。直接在模型中对密码加盐,相比之前的处理是在请求中加的盐
在controllers中处理功能逻辑,相比于之前直接在请求中处理逻辑
添加了express-async-handler自动捕获异常并传递给错误处理中间件,之前的用的是trycatch
后端
config中配置数据库,生成30天的token
models中定义聊天,消息,用户模型
controllers处理功能逻辑,
聊天处理:
进入聊天,判断两个人是否有聊天记录,有的话把最新的记录返回,否则创建新的记录
查询聊天,查询数据库中的聊天记录,返回聊天记录列表
创建组聊天,创建群组聊天,返回消息记录,
重命名组,更新组名
添加到聊天组,更新组内用户成员
从组中删除,删除组内用户,
信息处理
获取所有信息,发送信息,
用户处理
获取所有用户,注册用户,用户授权
使用mongoose,find中使用$and处理并条件,populate填充相关表的字段,并通过-排除不需要的字段,create创建,findOne单一查找,findByIdAndUpdate更新
middleware中间件处理token和错误捕获
routes中处理请求
server注册socketio,设置超时60s,监听消息,
部署改动:
导入用户,聊天,信息路由,导入中间件处理权限和错误信息,use添加接口,添加socket监听,安装socket,express-async-handler
重构数据库模型,重写todos前端接口
接口管理:chat的接口
user访问/user,默认的get获取所有用户,默认的post注册用户。login登录
chat访问/chat,默认的post单人聊天,get获取所有聊天,group创建组,rename重命名,groupremove删除,groupadd添加组
message访问message,携带聊天id的get获取所有信息,默认post发送信息
todo的接口
todos,get获取当前用户todos,post新建,put修改内容,patch修改状态,delete删除
signup,post注册
signin,post登录
思路:chat的登录注册替换tode的登录注册,todo的actions中修改接口的调用,
login1 signup1 组聊天2,sidedraw2,更新组3,我的聊天1,single2,但是有个socket
注册之后不跳转到组件,刷新之后才行,然后阿里云的服务器要配置websocket还需要买,就没有部署到服务器上