Tag: graphql

如何避免客户端在rea-apollo SSR中重新获取?

我是新的graphql与react-appollo我想用reax apollo与redux也服务器端呈现每一件事情都很好我的应用程序正在工作,但问题是当我的应用程序渲染它实际上是再次调用API它不使用我呈现状态 服务器.js import express from 'express'; import bodyParser from 'body-parser'; import path from 'path'; import expressGraphQL from 'express-graphql'; import schema from './GraphQL/Schema'; import React from 'react'; import ReactDOMServer from 'react-dom/server' import { StaticRouter } from 'react-router'; import { ApolloClient, createNetworkInterface, ApolloProvider } from 'react-apollo'; import { getDataFromTree } from "react-apollo" import store from '../client/Redux/Store/store'; […]

如何将请求正文传递到GraphQL上下文?

我目前正在尝试将请求主体放到上下文中,因为正文的一部分包含需要解码的JWT。 但是,当我尝试以下我得到上下文的未定义: app.use('/', graphqlHTTP((req) => ({ schema: Schema, context: req.body, pretty: true, graphiql: false }))); 我退出了请求,我没有看到身体在那里。 我正在使用名为react-reach的库,它将以下内容添加到请求中的正文: { query: {…}, queryParams: {…}, options: { token: '…' // <– I'm passing the token into options } } 我知道身体正在被解释,因为我身体的查询/突变正在被解释和执行。 当传递到上下文似乎无法find它。

有没有一种方法来从protobuf生成GraphQL模式?

我有一个相当大/复杂的API的protobuf定义,我不知道是否有一个方便的工具来自动生成一个文本GraphQL模式和它的(嵌套)types从这个protobuf的子集? 我正常使用Node.js,但我打开其他语言来生成架构。 提前致谢!

Edge.node字段types必须是输出types,但是:undefined

我正在尝试使用与Relay兼容的GraphQL架构来设置node.js服务器。 当试图validation或加载架构时,我得到以下错误: EventEdge.node field type must be Output Type but got: undefined. 这是由其他types定义中的Eventtypes的连接types引起的。 我不会发布整个模式,因为它非常详细,但是当连接字段被注释掉时,模式被正确加载,并且不会引发错误。 我已经包含了一个导致相同问题的简化模式的例子: const graphql = require('graphql') const relay = require('graphql-relay') const GraphQLID = graphql.GraphQLID, GraphQLInt = graphql.GraphQLInt, GraphQLString = graphql.GraphQLString, GraphQLList = graphql.GraphQLList, GraphQLObjectType = graphql.GraphQLObjectType, GraphQLSchema = graphql.GraphQLSchema, GraphQLNonNull = graphql.GraphQLNonNull const connectionArgs = relay.connectionArgs, connectionDefinitions = relay.connectionDefinitions, connectionFromArray = relay.connectionFromArray, […]

GraphQL参数错误:参数types必须是inputtypes,但得到:function GraphQLObjectType(config){

在服务器启动( node index.js )我得到以下错误与我的GraphQL NodeJS服务器: 错误:Query.payment(data :)参数types必须是inputtypes,但得到:function GraphQLObjectType(config){_classCallCheck(this,GraphQLObjectType); 这个错误发生时,我改变了我的原始参数从string args: { data: { type: graphQL.GraphQLString } }, 对于一个对象types: args: { data: { type: graphQL.GraphQLObjectType } }, 我需要一个对象types,因为我需要发送几个字段作为参数。 GraphQL服务器: var Query = new graphQL.GraphQLObjectType({ name: 'Query', fields: { payment: { type: graphQL.GraphQLString, args: { data: { type: graphQL.GraphQLObjectType } }, resolve: function (_, args) { // […]

NodeInterface和nodeField如何在relayjs中工作,它们是什么意思

nodeInterface如何重新提取并做对象识别, 这个type代表什么, obj是什么,这里的id是什么 什么是instanceof的意思 const { nodeInterface, nodeField } = nodeDefinitions( (globalId) => { const { type, id } = fromGlobalId(globalId); console.log('NodeDefinitions (globalId), id:', id); console.log('NodeDefinitions (globalId), type:', type); if (type === 'teacher') { return teacher.findOne({ _id: id }).exec(); } else if (type === 'college') { return college.findOne({ _id: id }).exec(); } else if (type […]

你如何定义一个中继连接分页ORM?

我浏览了Relay的所有文档,似乎并没有直接解释如何使用ORM构build中继连接。 所有的例子似乎都使用了connectionFromArray方法,如果您将数据存储在内存中,但是将数据存储在数据库中,那么您将如何提供连接分页工作所需的信息呢?

在GraphQL服务器中实现访问控制的好模式是什么?

背景: 我有一套模型,其中包括用户和其他各种模型,其中一些包含对用户的引用。 我通过Graffiti生成的GraphQL API公开了这些模型,Mongo数据库使用graffiti-mongoose适配器作为后台。 我当前的REST API(我正在迁移到GraphQL)使用JSON Web令牌来validation用户,并在服务器端有一些自定义权限逻辑来处理访问控制。 问题: 我想根据当前login的用户限制对GraphQL中的对象的访问。 有些模型应该可以通过未经authentication的调用进行读取。 大多数其他模型只能由创build它们的用户访问。 通过Graffiti生成的APIpipe理对象访问控制的最佳方式是什么? 一般来说,GraphQL的访问控制是否有良好的模式? 特别是,有没有什么好的例子或图书馆与涂鸦做呢? 笔记: 据我所知, 已经实施了涂鸦 – mongoose的前后钩子,并且可以用它们进行基本的二进制validation。 我想看看更详细的访问控制逻辑如何在GraphQL API中使用。 将来,我们需要支持像pipe理员那样可以访问由特定用户组创build的模型实例的东西(例如,其用户的机构包括pipe理员)。

GraphQL – 返回计算types依赖于参数

概述 (简体): 在我的NodeJS服务器中,我已经实现了下面的GraphQL模式: type Item { name: String, value: Float } type Query { items(names: [String]!): [Item] } 客户端查询然后传递一个名称数组作为参数: { items(names: ["total","active"] ) { name value } } 后端API查询一个mysql数据库,“ 总计 ”和“ 活动 ”字段(我的数据库表上的列),并减less响应,如下所示: [{"name":"total" , value:100} , {"name":"active" , value:50}] 我想我的graphQL API支持“比例”项目,IE:我想发送以下查询: { items(names: ["ratio"] ) { name value } } 要么 { items(names: ["total","active","ratio"] […]

GraphQL查询与表连接

我正在学习GraphQL所以我build立了一个小项目。 比方说,我有2个模型, User和Comment 。 const Comment = Model.define('Comment', { content: { type: DataType.TEXT, allowNull: false, validate: { notEmpty: true, }, }, }); const User = Model.define('User', { name: { type: DataType.STRING, allowNull: false, validate: { notEmpty: true, }, }, phone: DataType.STRING, picture: DataType.STRING, }); 关系是1:很多,用户可以有很多评论。 我已经build立了这样的架构: const UserType = new GraphQLObjectType({ name: 'User', fields: () […]