Koa+Mysql2+GraphQL脚手架 koa-shelf

简介

GraphQL 既是一种用于 API 的查询语言也是一个知足你数据查询的运行时。 GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端可以准确地得到它须要的数据,并且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具。mysql

优势:git

  1. 请求你所要的数据很少很多
  2. 获取多个资源只用一个请求
  3. 描述全部的可能类型系统
  4. 强大的开发者工具
  5. API 演进无需划分版本

本篇文章中将搭配Koa实现一个GraphQL的脚手架,配合Mysql2实现一个简单的脚手架github

项目结构以下所示

.
├─app
│  ├─dao // 使用数据库
│  │  └─common // 数据库查询插入公共组件
│  ├─resolver // graphql的回调函数
│  ├─routes // 书写普通接口
│  ├─schema // graphql的配置文件
│  └─utils // 配置公共模块
└─config // 配置文件
复制代码

如何使用

  1. git clone git@github.com:RenaultZC/koa-shelf.git
  2. npm install
  3. 复制config/db-template.js到config/db.js,而后配置数据库相关信息,建立test表,字段text为String类型
  4. npm run dev
  5. 到localhost:5000/graphql界面访问,查询示例:
query{
  getText{
    text
  }
}
复制代码

详细介绍项目目录

dao文件夹

该文件下写的是数据库操做,对于mysql数据库的增删改查操做,经过调用common公共组件中的makePromiseForQuery和makePromiseForExecute进行查询或增删改sql

resolver文件夹

该文件下写的是对于GraphQL解析器的书写,会经过graphql.js 将该文件下的全部文件进行整合输出数据库

schema文件夹

该文件下写的是对于GraphQL服务中的变量及类型的书写,会经过graphql.js 将该文件下的全部文件进行整合输出,与resolver函数一同生成GraphQL查询接口npm

routes文件夹

该文件下会书写普通接口,经过index.js的暴露出去来引用json

db.js文件

为数据库的基础配置,建立数据库链接池,减小数据库重连的消耗app

graphql.js文件

整合resolver文件夹和schema文件夹生成GraphQL接口koa

logger.js文件

负责后台开启后的平常日志打印,方便后台崩溃查错函数

调用方式

import { getLogger } from '../logger'

const logger = getLogger()


logger.error(`Reason: test error, Date:${new Date().toLocaleString()}, error:${e}`)
复制代码

config文件夹

数据库基础配置文件db.js

日志基础配置文件log4.json

脚手架实现操做

实现普通GraphQL示例

实现Router接口示例

实现数据库操做示例

代码使用ES6风格

实现日志文件记录功能

加入ESlint代码风格检测功能

代码地址

github

相关文章
相关标签/搜索