GraphQL入门3(Mutation)

时间:2021-11-07 01:32:13

创建一个新的支持Mutation的Schema.

var GraphQLSchema = require('graphql').GraphQLSchema;

var GraphQLObjectType = require('graphql').GraphQLObjectType;

var GraphQLString = require('graphql').GraphQLString;

var GraphQLList = require('graphql').GraphQLList;

var buildSchema  = require('graphql').buildSchema;

var fetch = require('node-fetch');

require("babel-polyfill");

// Construct a schema, using GraphQL schema language

var schema = buildSchema(

'    input MessageInput {'

+ '        content: String'

+ '        author: String'

+ '    }'

+ ''

+ '    type Message {'

+ '        id: ID !'

+ '        content: String'

+ '        author: String'

+ '    }'

+ ''

+ '    type Query {'

+ '        getMessage(id: ID!): Message'

+ '    }'

+ ''

+ '    type Mutation {'

+ '         createMessage(input: MessageInput): Message'

+ '         updateMessage(id: ID!, input: MessageInput): Message'

+ '    }'

);

// If Message had any complex fields, we'd put them on this object.

class Message {

constructor(id, {content, author}) {

this.id = id;

this.content = content;

this.author = author;

}

}

// Maps username to content

var fakeDatabase = {};

var root = {

getMessage: function ( { id }) {

if (!fakeDatabase[id]) {

throw new Error('no message exists with id ' + id);

}

return new Message(id, fakeDatabase[id]);

},

createMessage: function ({input}) {

// Create a random id for our "database".

var id = require('crypto').randomBytes(10).toString('hex');

fakeDatabase[id] = input;

return new Message(id, input);

},

updateMessage: function ({id, input}) {

if (!fakeDatabase[id]) {

throw new Error('no message exists with id ' + id);

}

// This replaces all old data, but some apps might want partial update.

fakeDatabase[id] = input;

return new Message(id, input);

}

};

module.exports.Schema = schema;

module.exports.Root = root;

创建一个新的router来使用这个Schema:

var express = require('express');

var graphQLHTTP = require('express-graphql');

var schema = require('../schemas/Schema2').Schema;

var root = require('../schemas/Schema2').Root;

var router = express.Router();

router.use(graphQLHTTP({

schema: schema,

rootValue: root,

graphiql : true

}));

module.exports = router;

客户端的测试代码如下:

app.js:

//Mutation

var Test7 = require('./Test7');

Test7.Execute();

Test7.js

//Test7: Mutation

var gRequest = require('graphql-request').request;

var util = require('util');

exports.Execute = function () {

var query = 'mutation CreateMessage($input: MessageInput) {'

+ '  createMessage(input: $input) {'

+ '    id,'

+ '    author,'

+ '    content'

+ '  }'

+ '}' ;

var varibles1 =

{

"input":

{

"author": "Tom",

"content": "this is my message"

}

};

//gRequest('http://localhost:1337/graphql/graphql', query).then(function (data) { console.log(data) });

gRequest('http://localhost:1337/graphql2/graphql', query, varibles1).then(function (data) {

console.log(util.inspect(data, { showHidden: false, depth: null }))

});

};

执行结果如下:

{ createMessage:

{ id: '48ed1228a3b390909365',

author: 'Tom',

content: 'this is my message' } }

示例来自: https://graphql.org/graphql-js/mutations-and-input-types/

GraphQL入门3(Mutation)的更多相关文章

  1. GraphQL入门有这一篇就足够了

    GraphQL入门有这一篇就足够了:https://blog.csdn.net/qq_41882147/article/details/82966783 版权声明:本文为博主原创文章,遵循 CC 4. ...

  2. Vue项目中GraphQL入门学习与应用

    1.GraphQL是什么,能干什么? 正如官网所说,GraphQL是一种用于API查询的语言.Facebook 的移动应用从 2012 年就开始使用 GraphQL.GraphQL 规范于 2015 ...

  3. Graphql入门

    Graphql入门 GraphQL是一个查询语言,由Facebook开发,用于替换RESTful API.服务端可以用任何的语言实现.具体的你可以查看Facebook关于GraphQL的文档和各种语言 ...

  4. GraphQL入门1

    1. 资源: 主站: https://graphql.org/ 中文站: http://graphql.cn 入门视频: https://graphql.org/blog/rest-api-graph ...

  5. 《分享》Graphql入门与实践

    最近项目用到了graphql,学习了一些并在公司做了一个小分享,希望对你有帮助 一.介绍 Graphql是一种面向数据的API查询语言 Graphql给前端提供一种强力的查询工具,我们可以根据自己定义 ...

  6. GraphQL 入门介绍

    写在前面 GraphQL是一种新的API标准,它提供了一种更高效.强大和灵活的数据提供方式.它是由Facebook开发和开源,目前由来自世界各地的大公司和个人维护.GraphQL本质上是一种基于api ...

  7. GraphQL入门2

    将服务器端的代码升级了一下: var GraphQLSchema = require('graphql').GraphQLSchema; var GraphQLObjectType = require ...

  8. [GraphQL] Apollo React Mutation Component

    In this lesson I refactor a React component that utilizes a higher-order component for mutations to ...

  9. GraphQL快速入门教程

    摘要: 体验神奇的GraphQL! 原文:GraphQL 入门详解 作者:MudOnTire Fundebug经授权转载,版权归原作者所有. GraphQL简介 定义 一种用于API调用的数据查询语言 ...

随机推荐

  1. MIME对应表

    文件后缀与MIME类型的对应表            'ai' => 'application/postscript',            'aif' => 'audio/x-aiff ...

  2. 刀哥多线程GCD核心概念gcd

    GCD GCD 核心概念 将任务添加到队列,并且指定执行任务的函数 任务使用 block 封装 任务的 block 没有参数也没有返回值 执行任务的函数 异步 dispatch_async 不用等待当 ...

  3. 特征值分解,奇异值分解(SVD)

    特征值分解和奇异值分解在机器学习领域都是属于满地可见的方法.两者有着很紧密的关系,我在接下来会谈到,特征值分解和奇异值分解的目的都是一样,就是提取出一个矩阵最重要的特征. 1. 特征值: 如果说一个向 ...

  4. 禁止form表单回车键进行提交

    使用EasyUI的时候,我们会给一个datagrid添加一个搜索栏,但是这个搜索栏的form,我们一般使用ajax向服务器提交数据,因此在这样一个环境下可以考虑禁止用户按回车键(Enter)提交.代码 ...

  5. vue实战记录(二)- vue实现购物车功能之创建vue实例

    vue实战,一步步实现vue购物车功能的过程记录,课程与素材来自慕课网,自己搭建了express本地服务器来请求数据 作者:狐狸家的鱼 本文链接:vue实战-实现购物车功能(二) GitHub:sue ...

  6. Python开发环境-Pyenv安装使用

    安装使用-Pyenv 简单的python版本管理:pyenv 管理python解释器 管理python版本 管理python的虚拟环境 官网:https://github.com/pyenv/pyen ...

  7. sklearn聚类模型:基于密度的DBSCAN;基于混合高斯模型的GMM

    1 sklearn聚类方法详解 2 对比不同聚类算法在不同数据集上的表现 3 用scikit-learn学习K-Means聚类 4 用scikit-learn学习DBSCAN聚类 (基于密度的聚类) ...

  8. xcode修改默认头部注释(__MyCompanyName__) (转)

    打开命令行: defaults write com.apple.Xcode PBXCustomTemplateMacroDefinitions '{ "ORGANIZATIONNAME&qu ...

  9. CentOS系统下的数据盘挂载

    此教程适用系统:Linux(CentOS,Debian,Ubuntu,Fedora) 通常新开通的Linux云服务器数据盘都未做分区和格式化.在进行数据盘挂载之前我们要先进行分区以及格式化操作.注意, ...

  10. NeteaseCloudWebApp模仿网易云音乐的vue自己从开源代码中学习到的

    github地址: https://github.com/javaSwing/NeteaseCloudWebApp 1.Vue.prototype.$http = Axios // 类似于vue-re ...