标签: apollo

为什么GraphQL片段在查询中需要__typename?

我无法找到或者我在错误的地方查找有关片段如何匹配的任何文档.当我使用香草Apollo客户端如果我关闭addTypename我使用片段时的选项我得到一个警告heuristic fragment matching going on!,如果我添加它会消失,但我的回复包含许多__typename我不需要的字段.他们为什么帮忙?

apollo graphql apollo-client

9
推荐指数
1
解决办法
2328
查看次数

带有React的Apollo客户端2无法进行查询

我在使用React的Apollo客户端版本2时遇到了问题.(https://www.apollographql.com/docs/react/)

当我根据文档设置Apollo客户端时,我无法在GraphQl服务器上进行查询,它会引发错误:

Uncaught (in promise) TypeError: _super.call is not a function
    at new ObservableQuery (ObservableQuery.js:36)
    at QueryManager.watchQuery (QueryManager.js:393)
    at QueryManager.js:420
    at new Promise (<anonymous>)
    at QueryManager.query (QueryManager.js:418)
    at ApolloClient.query (ApolloClient.js:86)
    at Object._typeof (index.js:21)
    at __webpack_require__ (bootstrap 4164d2c8f7d280e544dd:19)
    at Object.<anonymous> (location.js:34)
    at __webpack_require__ (bootstrap 4164d2c8f7d280e544dd:19)
Run Code Online (Sandbox Code Playgroud)

我的代码在这里:

import { ApolloClient } from "apollo-client";
import { HttpLink } from "apollo-link-http";
import { InMemoryCache } from "apollo-cache-inmemory";
import gql from "graphql-tag";
const client = new ApolloClient({
  link: new HttpLink({ uri: "https://q80vw8qjp.lp.gql.zone/graphql" }), …
Run Code Online (Sandbox Code Playgroud)

javascript apollo reactjs graphql

9
推荐指数
1
解决办法
691
查看次数

如何从Express服务器后端调用GraphQL查询/变异?

我的前端是localhost:3000,我的GraphQL服务器是localhost:3333.

我已经使用react-apollo在JSX中查询/变异,但还没有从Express中查询/变异.

我想在我的网站上进行查询/变异server.js.

server.get('/auth/github/callback', (req, res) => {
  // send GraphQL mutation to add new user
});
Run Code Online (Sandbox Code Playgroud)

下面似乎是正确的方向,但我得到TypeError: ApolloClient is not a constructor:

const express = require('express');
const next = require('next');
const ApolloClient = require('apollo-boost');
const gql = require('graphql-tag');


// setup
const client = new ApolloClient({
  uri: 'http://localhost:3333/graphql'
});
const app = next({dev});
const handle = app.getRequestHandler();

app
  .prepare()
  .then(() => {
    const server = express();

    server.get('/auth/github/callback', (req, res) => {
      // …
Run Code Online (Sandbox Code Playgroud)

express apollo graphql apollo-client

9
推荐指数
1
解决办法
1285
查看次数

使用 Apollo Server 时如何生成 schema.graphql 文件?

使用Apollo Server编写GraphQL服务器时,如何在服务器上运行命令生成文件schema.graphql供客户端使用?注意:我没有使用 Apollo 客户端,我使用的是 Relay。

我知道我可以运行 GraphQL Playground 并从那里下载它,但我想要一个可以自动化的命令行。

我正在寻找类似于rake graphql:schema:dump使用GraphQL Ruby时的东西,您可以在服务器上运行它来生成schema.graphql.

apollo graphql apollo-server

9
推荐指数
1
解决办法
1万
查看次数

Nextjs - 在服务器端访问 url 参数

我正在使用官方的with-apollo示例来创建 nextjs 前端。我正在尝试使用用户的 slug,它可以在 url 字符串中找到来呈现用户配置文件。但是,我无法使用 url 参数(slug)作为 graphql 查询中的变量。

用户个人资料的链接

<Link href={{ pathname: "/users/[slug]", query: { slug: user.slug } }}>
Run Code Online (Sandbox Code Playgroud)

用户配置文件组件

import { gql, useQuery } from "@apollo/client"
import ErrorMessage from "./ErrorMessage"
import { useRouter } from "next/router";

export const USER_QUERY = gql`
  query getUser($slug: String!) {
    user(slug: $slug) {
      id
      email
    }
  }
`

// I can not get this to work using url parameters
export const userQueryVars = {
  slug: "userSlug", // This should be …
Run Code Online (Sandbox Code Playgroud)

javascript apollo reactjs next.js

9
推荐指数
1
解决办法
3万
查看次数

Apollo Federation 子图之间的服务间通信

假设我们有S1S2子图和G网关。

S1子图服务需要来自服务的一些数据S2。应该如何通过网关和模式级别进行处理?在这种通信中我们应该使用网关吗?

我们是否应该在包含内部查询和突变的每个子图中都有一个单独的模式和 Apollo 服务器?应该S1直接调用S2“内部apollo服务器”吗?

默认情况下,所有面向用户的请求都需要经过 JWT 授权,但内部通信无需经过此授权即可正常工作。

子图在公共网络上不可用,但它们在同一内部网络上运行。从技术上讲,他们可以看到对方。它们托管在 GKE 上。

node.js apollo google-kubernetes-engine graphql apollo-federation

9
推荐指数
1
解决办法
1832
查看次数

Apollo(GraphQL)在查询中获取多个元素

我可以在GraphQL查询中获取多个元素吗?我有很多产品列表数据,我想在我的组件中获取三个产品.我有一系列需要的产品ID,我可以将其传递给查询吗?这是我对一个产品的查询:

query ProductInCartQuery($id: ID!){
  Product(id: $id) { 
   id
   name
   price
 }
}
Run Code Online (Sandbox Code Playgroud)

但我不认为我可以把它放在一个函数中,例如对三个产品执行三次.

apollo reactjs graphql

8
推荐指数
1
解决办法
1007
查看次数

apollo-link-state cache.writedata导致缺少字段警告

当我在客户端上调用变异时,我收到以下警告:

writeToStore.js:111 {}中缺少字段updateLocale

这是我的stateLink:

const stateLink = withClientState({
  cache,
  resolvers: {
    Mutation: {
      updateLocale: (root, { locale }, context) => {
        context.cache.writeData({
          data: {
            language: {
              __typename: 'Language',
              locale,
            },
          },
        });
      },
    },
  },
  defaults: {
    language: {
      __typename: 'Language',
      locale: 'nl',
    },
  },
});
Run Code Online (Sandbox Code Playgroud)

这是我的组成部分:

export default graphql(gql`
  mutation updateLocale($locale: String) {
    updateLocale(locale: $locale) @client
  }
`, {
    props: ({ mutate }) => ({
      updateLocale: locale => mutate({
        variables: { locale },
      }),
    }),
  })(LanguagePicker);
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

apollo react-apollo

8
推荐指数
1
解决办法
3820
查看次数

GraphQL如何避免输入和输出类型之间的重复代码

我是GraphQL的新手,但我真的很喜欢它.现在,我正在玩接口和工会,我面临着突变的问题.

假设我有这个架构:

interface FoodType {
    id: String
    type: String
    composition: [Ingredient]
  }

  type Pizza implements FoodType {
    id: String
    type: String
    pizzaType: String
    toppings: [String]
    size: String
    composition: [Ingredient]
  }

  type Salad implements FoodType {
    id: String
    type: String
    vegetarian: Boolean
    dressing: Boolean
    composition: [Ingredient]
  }

  type BasicFood implements FoodType {
    id: String
    type: String
    composition: [Ingredient]
  }

  type Ingredient {
      name: String
      qty: Float
      units: String
  }
Run Code Online (Sandbox Code Playgroud)

现在,我想创造新的食品,所以我开始做这样的事情:

type Mutation {
    addPizza(input:Pizza):FoodType
    addSalad(input:Salad):FoodType
    addBasic(input:BasicFood):FoodType
}
Run Code Online (Sandbox Code Playgroud)

这不起作用有两个原因:

  1. 如果我想将对象作为参数传递,则该对象必须是"输入"类型.但"披萨","沙拉"和"基本食品"只是"类型".
  2. 输入类型无法实现接口.

所以,我需要修改我之前的架构,如下所示: …

interface apollo graphql

8
推荐指数
1
解决办法
1259
查看次数

如何在apollo-upload-client中使用apollo-link-http?

我试图找出如何使用apollo-link-httpapollo-upload-client.

两者都创建一个终止链接,但我怎么能一起使用这两个?在我的index.js中我喜欢这个,但它不会工作因为两个链接都终止=>

const uploadLink = createUploadLink({ uri: process.env.REACT_APP_GRAPHQL_URL });

const httpLink = new HttpLink({ uri: process.env.REACT_APP_GRAPHQL_URL });

const client = new ApolloClient({
    link: ApolloLink.from([ authLink, logoutLink, stateLink, uploadLink, httpLink ]),
    cache,
});
Run Code Online (Sandbox Code Playgroud)

有帮助吗?我对Apollo/Graphql没什么经验,但我想使用文件上传组件.

javascript file-upload apollo reactjs graphql

8
推荐指数
1
解决办法
2215
查看次数