Tag: graphql

将复杂的parameter passing给GraphQL突变

我已经在使用graphql-js的Node服务器中使用GraphQL,并且GraphQL已经被certificate是一个非常有价值的抽象,但是我遇到了一个问题。 我经常发现自己需要使用GraphQLInputObjectType将大型结构化对象作为parameter passing给GraphQL突变。 这样可以,但是GraphQL不支持使用JSON记法:(所以我最终只是发送一个包含JSON的string,供服务器处理。 const objectStr = JSON.stringify(object).replace(new RegExp("\"", "g"), "'") graphQLClient(`{ user: updateUser(someDataObject: "${objectStr}") {…} }`) 但是现在我从GraphQL中一点也不受益! 我有一种感觉,我在这里做错了什么。 什么是GraphQL发送方式,比如registry单数据到一个变种?

GraphQL错误“字段必须是字段名称作为键的对象或返回这样的对象的函数。

为什么我从模式文件中得到这个错误? 错误: graphql/jsutils/invariant.js:19 throw new Error(message); ^ Error: Entity fields must be an object with field names as keys or a function which returns such an object. 错误发生在PersonType的entity prop上。 味精指示Entity上的每个字段都应该是一个对象,但是我没有看到任何地方的例子。 基本上,我试图从一个Person查询返回一个值,从DuckDuckGo API获取一些数据。 从API返回的数据是一个具有许多属性的对象,其中我试图用两个来填充我的Person对象上的一个entity对象。 我已经看过types系统文档,但没有看到答案。 http://graphql.org/docs/api-reference-type-system/ 这是在Node上运行的代码,并被提供给GraphiQL UI。 任何意见,将不胜感激! 谢谢。 码: const PersonType = new GraphQLObjectType({ name: 'Person', description: '…', fields: () => ({ name: { […]

在命令行上运行graphql示例导致意外的令牌

正在尝试以下链接给出的graphql示例代码: http ://graphql.org/graphql-js/running-an-express-graphql-server/ 当我尝试启动命令行上的服务器结束与语法错误:意外的令牌 错误日志如下所示: C:\Users\ssadanandappa\Desktop\temp\node\server.js:8 var { buildSchema } = require('graphql'); ^ SyntaxError: Unexpected token { at exports.runInThisContext (vm.js:53:16) at Module._compile (module.js:373:25) at Object.Module._extensions..js (module.js:416:10) at Module.load (module.js:343:32) at Function.Module._load (module.js:300:12) at Function.Module.runMain (module.js:441:10) at startup (node.js:139:18) at node.js:974:3 很抱歉尝试了很多的select,我可以躺在我的手,但仍然是一样的。 新手在这里,任何帮助将非常感激。 🙂

GraphQL的最低必需节点版本?

我正在尝试获取在Node.js环境中作为服务器工作的GraphQL.js的参考实现。 请注意,我对Node.js的使用经验有限。 现在,我正在使用node v4.2.6,它是Ubuntu的Ubuntu 16.04的最新软件包。 官方文件说,这个脚本应该工作: var express = require('express'); var graphqlHTTP = require('express-graphql'); var { buildSchema } = require('graphql'); // Construct a schema, using GraphQL schema language var schema = buildSchema(` type Query { hello: String } `); // The root provides a resolver function for each API endpoint var root = { hello: […]

GraphQL:react-apollo客户端覆盖数组元素

我有一个返回一个项目数组的GraphQL查询。 我可以在GraphiQL中运行查询并获得我期望的结果。 我有一个反应的应用程序,使用react-apollo和@graphql装饰器来解决相同的查询组件道具。 当通过react-apollo运行查询时,返回数组中的每个项目都是相同的 – 每个项目都被最后一个项目“覆盖”。 我可以在开发工具networking选项卡中看到正确的数组项目是通过networking发送的,所以这个问题似乎与react-apollo有关。 什么可能导致反应apollo覆盖数组元素?

使用Express JS检查API请求授权的更好方法

我有一个超级冗余的server.js文件,因为几乎所有属于REST API的方法都是这样开始的,因为我必须在API请求中检查客户端是否有权要求特定的事情。 var jwt = require('jsonwebtoken'); // … app.get('/getsomething', function(req, res) { "use strict"; var token = req.headers[tokenName]; if (token) { jwt.verify(token, app.get('some_secret'), { ignoreExpiration: false }, function(err, decoded) { if (err || typeof decoded === "undefined") { res.json({ status: 401, message: "unauthorized" }); } else { // actual code starts here… 什么是更好的方法?

在GraphQL中将数组作为parameter passing

我已经开始研究GraphQL。我的模式也包含一个列表项目。 以下是我的模式的代码: var userType = new graphql.GraphQLObjectType({ name: 'user', fields: function () { return { _id: { type: graphql.GraphQLID }, name: { type: graphql.GraphQLString }, age: { type: graphql.GraphQLString }, degrees:[ {type:graphql.GraphQLList} ] } } }); 并且查询如下: var QueryType = new graphql.GraphQLObjectType({ name: 'Query', fields: () => ({ userArr: { type: new graphql.GraphQLList(userType), args:{ degrees:{type:new […]

GraphQL订阅:超过最大听众警告

我们正在使用GraphQL订阅和pubsub订阅post。 当发生超过10个订阅时,我们得到节点警告“MaxListenersExceededWarning:检测到可能的EventEmitter内存泄漏”。 是否有可能提高pubsub类中的最大听众? pubsub类在一个单独的模块内,如下所示: import { PubSub } from 'graphql-subscriptions'; const pubsub = new PubSub(); export { pubsub }; 订阅服务器如下所示: import { SubscriptionManager } from 'graphql-subscriptions'; import { createServer } from 'http'; import { SubscriptionServer } from 'subscriptions-transport-ws'; import { pubsub } from './subscriptions'; import executableSchema from './executableSchema'; const WS_PORT = 8080; const websocketServer = […]

testingGraphQL API

我正在testing我的GraphQL API,但我想稍微清理一下。 值得注意的是,我正在使用chai-http作为networking请求。 这是我目前正在做的(哪些工作): let createUser = (()=> { return new Promise((resolve, reject) => { chai.request(server) .post('/api/graphql/') .set('content-type', 'application/json') .send({ 'query' : 'mutation users { \ user : addUser(inputs: { \ firstName: \"Test\", \ lastName: \"User\", \ email: \"test@test.com\", \ }) { \ id, \ firstName \ } \ }' }) .end((err, res) => { […]

Apollo Stack支持像Relay这样的节点接口的全局对象标识吗?

我在阿波罗堆栈和继电器方面都很新。 我正试图在他们之间select投入我的时间。 在阅读完本书学习GraphQL和Relay之后 ,我转向Apollo了解它提供的内容,但现在互联网上的资源并不多。 我最近有这个问题,但无法find答案:Apollo是否支持像Relay这样的全局对象标识与节点接口? 如果不是,它是否有其他解决scheme来支持全球对象识别?