博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
graphql-yoga interface && union 使用
阅读量:7262 次
发布时间:2019-06-29

本文共 2073 字,大约阅读时间需要 6 分钟。

 

接口就是一个约定,方便数据的约定,union 可以实现数据类型的共享,减少代码量

基本项目

参考

  • 项目结构
├── Jenkinsfile├── README.md├── app.js├── docker-compose.yml├── dockerfile├── package.json├── schema.graphql└── yarn.lock

interface && union 使用

  • interface app.js
const { GraphQLServer } = require('graphql-yoga')const typeDefs = `schema.graphql`const resolvers = {Applogin:{__resolveType(obj) {if (obj.type==1) {return 'MobileApplogin'} else {return 'DesktopApplogin'}}},SearchResult:{__resolveType(obj) {if (obj.type) {return 'App'} else {return 'LocalUser'}}},Query: {hello: function(_,name){return {name:`${name.name}`,age:33}},localtype:function(parent,ob){return {name:`${ob.name}`,age: ob.name.length}},login:function(parent,ob){if (ob.name=="dalong"){return {name:"dalong",account:"app mobile info"}}else {return {name:"dalong",type:44,account:"app mobile info"}}},appsearch:function(parent,ob){return {name:"demoaopp",age:333,type:55}},appinfo:function(parent,ob){console.log(ob,parent)return {name:ob.name,type:3}},listOfStrings:function(parent){return ["dalong","demoapp","rong"]}},Mutation:{addUser:function(parent,ob){console.log(ob)return JSON.stringify(ob)}}}const options = {port: 8000,endpoint: '/graphql',subscriptions: '/subscriptions',playground: '/playground',}const server = new GraphQLServer({ typeDefs, resolvers })server.start(() => console.log('Server is running on localhost:4000'))
  • schema
type LocalUser {name: Stringage: Int}interface Applogin {name:Stringaccount:String}type MobileApplogin implements Applogin{type:Intname:Stringaccount:String}type DesktopApplogin implements Applogin{type:Intname:Stringaccount:String}union SearchResult = App|LocalUserinput MyUser {name:Stringage:Int}type Query {hello(name: String): User!localtype(name:String):LocalUser!listOfStrings: [String]!# interface demologin(name:String):Applogin# for directive demoappinfo(name:String,flag:Boolean):App# union demoappsearch(name:String):SearchResult}# app infotype App {# app namename:String# app typetype:Int}type Mutation{addUser(input:MyUser):String}scalar User {name: Stringage: Int}

参考效果

  • interface
  • union

参考资料

 
 
 
 

转载地址:http://dlddm.baihongyu.com/

你可能感兴趣的文章
云计算的智慧城市架构
查看>>
Unity 事件函数的执行顺序
查看>>
Git教程6——常用命令总结
查看>>
应用统计学与R语言实现笔记(番外篇一)——判别分析更正
查看>>
Linux系统管理---进程管理(查看进程、终止进程、更改进程优先级)
查看>>
java.util.Collection源码分析和深度讲解
查看>>
安卓开发笔记(十):升级ListView为RecylerView的使用
查看>>
大数据就业方向中,主要划分为哪些职位?
查看>>
社交系统ThinkSNS+版本的 SPA(H5)安装教程
查看>>
5G通讯解决方案公司佰才邦Baicells完成亿元B+轮融资,高通领投
查看>>
海外“水逆”还在持续,华为落选韩国电信5G设备供应商
查看>>
zookeeper - 选举(2)
查看>>
jquery datetimepicker日期时间控件
查看>>
自定义View(一)
查看>>
Java使用Porxy和InvocationHandler实现动态代理
查看>>
微软携手 Docker 打造 CNAB,实现跨分布式应用程序的统一管理
查看>>
Java面试通关要点汇总集
查看>>
使用GDI+生成KnownColor列表
查看>>
Docker深入浅出系列——容器管理【附加视频】
查看>>
消息的写入和读取流程
查看>>