# dgraph_graphql_module
**Repository Path**: wisgon/dgraph_graphql_module
## Basic Information
- **Project Name**: dgraph_graphql_module
- **Description**: graphql的超简单部署应用,让你以后从此摆脱后端curd,让前端不用学后端就可以做全栈
- **Primary Language**: Go
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 5
- **Forks**: 1
- **Created**: 2020-11-24
- **Last Updated**: 2023-03-03
## Categories & Tags
**Categories**: api-gateway
**Tags**: None
## README
# dgraph_graphql_module
本项目是 graphql 的超简单部署和开发,从此绝大部分需求都可**摆脱后端 curd**,后端工作量大减,前端**不用学后端**就可成为全栈!!!
## 简介
本项目使用 dgraph 图数据库,摆脱了传统关系型数据库的联表查询等复杂的查询方式,直接以图结构的节点和边的模型来储存数据和表示数据之间的关系,适合快速开发一些小项目,大项目的话,由于还没有和传统的关系型数据库做一个同样接口下的 io 性能测试,所以还不清楚大项目中,高并发高读写情况下 dgraph 的数据库能力,不过据 dgraph 官方描述是非常棒的,尤其是在大表的联表查询的时候,图数据库是完爆关系型数据库的,有兴趣的朋友可以自行测试一下;
### 项目内容
本项目主要为使用 dgraph 图数据库的 graphql 语言提供一个简易的 todo-app 作为开发模板,包含了一个 go 语言写的 jwt 鉴权后端,和如何部署如何调试的文档,以及学习 dgraph 图数据库的 graphql 查询语言的语法的 md 文档,详细的 dgraph 图数据库的英文文档请移步[dgraph doc](https://dgraph.io/docs/graphql/)
#### 部署
- clone 本项目
```
git clone --recursive https://gitee.com/wisgon/dgraph_graphql_module.git
```
- [安装 docker](https://docs.docker.com/get-docker/),安装完后,按照[部署文档](https://gitee.com/wisgon/dgraph_graphql_module/blob/master/learn_graphql/0-%E7%8E%AF%E5%A2%83%E9%83%A8%E7%BD%B2.md)进行环境部署
- 安装 nodejs,npm,这个前端必备技能,就不多说了,作者这边的 node 版本是 v10.19.0,npm 版本是 6.14.4,大家可酌情安装对应版本,不一定要完全一样,差不多就行
#### 运行
- 如果是宝塔部署的,则进入 dgraphql_backend/bin 文件夹下,选择对应平台的 main_baota 可执行文件,执行,如果是 docker 的 nginx 容器部署的,则在部署环节已经运行了对应的 main_nginx 了;
- 运行前端:
```
cd vue-todo-app
npm install
npm run serve
```
访问`localhost:8081`即可看到 todo-app 的主页,然后点 Rigest 注册用户、登陆,之后就可尝试添加 todo 了;
**至此,尽情体验不用写后端接口的畅快吧**
效果图:

成功运行后,要先注册自己的帐号密码,然后注册名为`peter`和名为`others`的账号,密码随便,这样,才可以运行一些本项目的一些演示示例;
#### 学习文档
- [起步](https://gitee.com/wisgon/dgraph_graphql_module/blob/master/learn_graphql/1-%E8%B5%B7%E6%AD%A5.md)
- [schema 的设计](https://gitee.com/wisgon/dgraph_graphql_module/blob/master/learn_graphql/2-Schema%E7%9A%84%E8%AE%BE%E8%AE%A1.md)
- [Api 初探](https://gitee.com/wisgon/dgraph_graphql_module/blob/master/learn_graphql/3-Api.md)
- [mutation 详解](https://gitee.com/wisgon/dgraph_graphql_module/blob/master/learn_graphql/4-mutation%E8%AF%A6%E8%A7%A3.md)
- [query 详解](https://gitee.com/wisgon/dgraph_graphql_module/blob/master/learn_graphql/5-query%E8%AF%A6%E8%A7%A3.md)
- [认证和鉴权](https://gitee.com/wisgon/dgraph_graphql_module/blob/master/learn_graphql/6-%E8%AE%A4%E8%AF%81%E5%92%8C%E9%89%B4%E6%9D%83.md)
- [todo-app 详解](https://gitee.com/wisgon/dgraph_graphql_module/blob/master/learn_graphql/7-todo-app-demo.md)
#### 接下来的计划
- 添加用户彼此是 friend 的场景 demo,某个用户将 todo 变成 public,他的朋友可以看到
- 添加 graphql 的 subscribe(相当于 websocket,当监听的数据变化了,客户端可获得实时推送)
- 做数据库测试,测一下相同的 io 条件下 dgraph 和 mysql 的性能差异
- jwt 的 token 过期后的处理
- 更多不同需求场景相应的 demo
- dgraph 天生支持分布式,写 dgraph 分布式 md 文档以及示例 demo
- 保持 dgraph 官方文档和本项目文档的同步,在作者做这个项目的时候,dgraph 图数据库也是在发展中的,其 graphql 功能也是今年 2020 年初刚推出不久,很多功能也在开发中,作者会持续保持对 dgraph 数据库官方文档的跟进,保持更新
- 多编程语言的 jwt 后台
谢谢大家的支持,如果觉得不错,不要忘记 star 和 fork 喔^\_^
如果觉得本项目对大家有帮助,就请作者喝杯咖啡吧
