创建自定义graphql-binding
graphql-binding 是一个比较方便强大的工具,方便我们进行代码生成以及开发gateway的功能
项目初始化
- 使用prisma cli
使用脚手架 
prisma init appdemo
? Set up a new Prisma server or deploy to an existing server? Use existing database
? What kind of database do you want to deploy to? (Use arrow keys)
❯ MySQL MySQL compliant databases like MySQL or MariaDB
  PostgreSQL PostgreSQL database
➜ binding prisma init appdemo
? Set up a new Prisma server or deploy to an existing server? Create new database
? What kind of database do you want to deploy to? MySQL
Created 3 new files:
  prisma.yml Prisma service definition
  datamodel.graphql GraphQL SDL-based datamodel (foundation for database)
  docker-compose.yml Docker configuration file
Next steps:
  1. Open folder: cd appdemo
  2. Start your Prisma server: docker-compose up -d
  3. Deploy your Prisma service: prisma deploy
  4. Read more about Prisma server:
     http://bit.ly/prisma-server-overview- 添加数据
mutation {
  createUser(data:{
    name:"demoapp"
  }){
    id
    name
  }
}
创建bingding
- 生成schema
npm install -g get-graphql-schema
get-graphql-schema http://localhost:4466 > myuser-graphql-binding/schemas/datamodel.graphql- 添加依赖
{
"name": "myuser-graphql-binding",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"dependencies": {
"apollo-link-http": "^1.5.4",
"fs": "^0.0.1-security",
"graphql": "^0.13.2",
"graphql-binding": "^2.2.2",
"node-fetch": "^2.2.0"
}
}- 添加bingding代码
const fs = require('fs')
const path = require('path')
const fetch = require('node-fetch')
const { Binding } = require('graphql-binding')
const { HttpLink } = require('apollo-link-http')
const { makeRemoteExecutableSchema } = require('graphql-tools')
const link = new HttpLink({ uri: 'http://localhost:4466', fetch })
const typeDefs = fs.readFileSync(
path.join(__dirname, './schemas/datamodel.graphql'),
'utf-8',
)
const schema = makeRemoteExecutableSchema({ link, schema: typeDefs })
class MyUserBinding extends Binding {
constructor() {
super({ schema })
}
}
module.exports = MyUserBinding使用
- 使用npm link 生成local package
npm link myuser-graphql-binding- 调用
app.js
const binding = require("myuser-graphql-binding")
const post_api = new binding();
console.log(post_api.query.users({}).then((data)=>{
console.log(data)
}))
参考图
 
 

参考资料
https://www.prisma.io/blog/graphql-binding-2-0-improved-api-schema-transforms-automatic-codegen-5934cd039db1/ 
https://github.com/rongfengliang/graphql-bingding-demo 
https://docs-beta.prisma.io/1.13/use-prisma-api/prisma-bindings/code-generation-frr1/
创建自定义graphql-binding的更多相关文章
- 【Knockout】五、创建自定义绑定
		概述 除了上一篇列出的KO内置的绑定类型(如value.text等),你也可以创建自定义绑定. 注册你的binding handler ko.bindingHandlers.yourBindingNa ... 
- Knockout应用开发指南 第五章:创建自定义绑定
		原文:Knockout应用开发指南 第五章:创建自定义绑定 创建自定义绑定 你可以创建自己的自定义绑定 – 没有必要非要使用内嵌的绑定(像click,value等).你可以你封装复杂的逻辑或行为,自定 ... 
- 使用 DotNet CLI 创建自定义的 WPF 项目模板
		描述 当我们安装完 DotNetCore 3.0 版本的 SDK 后,我们就可以创建基于 DotNetCore 的 WPF 项目模板,通过如下 CLI 可以方便快捷的创建并运行我们的项目: dotne ... 
- (七)Knockout  创建自定义绑定
		创建自定义绑定 你可以创建自己的自定义绑定 – 没有必要非要使用内嵌的绑定(像click,value等).你可以你封装复杂的逻辑或行为,自定义很容易使用和重用的绑定.例如,你可以在form表单里自定义 ... 
- 在vue中创建自定义指令
		原文:https://dev.to/ratracegrad/creating-custom-directives-in-vue-58hh 翻译:心上有杨 指令是带有 v- 前缀的特殊属性.指令的作用是 ... 
- 【COCOS2DX-LUA 脚本开发之四】使用tolua++编译pk创建自定义类
		此篇基本[COCOS2DX(2.X)_LUA开发之三]在LUA中使用自定义精灵(LUA脚本与自创建类之间的访问)及LUA基础讲解 在Lua第三篇中介绍了,如何在cocos2dx中使用Lua创建自定义类 ... 
- 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
		概述 最近,有客户向我们请求开发一个前端下拉控件,需求是显示了一个列表,其中包含可由用户单独选择的项目控件,该控件将在下拉列表中显示多选TreeView(树形图). 如今WijmoJS已经实现了该控件 ... 
- ASP.NET MVC随想录——创建自定义的Middleware中间件
		经过前2篇文章的介绍,相信大家已经对OWIN和Katana有了基本的了解,那么这篇文章我将继续OWIN和Katana之旅——创建自定义的Middleware中间件. 何为Middleware中间件 M ... 
- 带你走近AngularJS - 创建自定义指令
		带你走近AngularJS系列: 带你走近AngularJS - 基本功能介绍 带你走近AngularJS - 体验指令实例 带你走近AngularJS - 创建自定义指令 ------------- ... 
- [转]maven创建自定义的archetype
		创建自己的archetype一般有两种方式,比较简单的就是create from project 1.首先使用eclipse创建一个新的maven project,然后把配置好的一些公用的东西放到相应 ... 
随机推荐
- 小奇的糖果(candy)
			[题目背景]小奇不小心让糖果散落到了地上,它对着满地的彩色糖果胡思乱想.[问题描述]有 N 个彩色糖果在平面上. 小奇想在平面上取一条水平的线段,并拾起它上方或下方的所有糖果.求出最多能够拾起多少糖果 ... 
- Git-时光穿梭【转】
			本文转载自:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 时光穿梭机 我们已经成 ... 
- vim 录制宏,自动循环执行组合操作
			前言 在 vim 中录制宏的意思就是把一段操作录制下来,然后可以重复执行.打个比方,我有一个文本,一共 50000 行,我要在每一行后面加一个英文句号.这个操作如果手动做的话效率非常低.这时候我可以这 ... 
- 初始化 Flask 虚拟环境 命令
			参考:<Flask Web开发> 系统:Mac OSX CMD // 激活环境 virtualenv venv source venv/bin/activate // 安装flask pi ... 
- 安全之路:Web渗透技术及实战案例解析(第2版)
			安全之路:Web渗透技术及实战案例解析(第2版) 
- JavaScript获取输入框内容
			html: <input name="money" type="number" placeholder="税前工资"><b ... 
- Mac OS 下安装 Vagrant
			Vagrant是一款用来构建虚拟开发环境的工具,它其实算是一个跨平台的虚拟机管理工具 1 安装 1.1 安装Vagrant 下载好pkg文件后,下一步安装即可 1.2 安装Virtualbox Vag ... 
- windows java 环境变量配置
			第一步 找到系统设置环境变量的位置(windows 10): 控制面板\系统和安全\系统 点击 ‘高级系统设置’ 就可以看到 “环境变量” 了 第二步 设置3个路径 1.path (配置JD ... 
- Model/ModelMap 和 ModelAndView 的区别使用
			Model/ModelMap 和 ModelAndView 的区别使用 Model/ModelMap controller: package springmvc.controller; import ... 
- codeforce——思维dp
			Codeforces 822C Hacker, pack your bags!(思维) 题目大意:给你n个旅券,上面有开始时间l,结束时间r,和花费cost,要求选择两张时间不相交的旅券时间长度相 ... 
