我无法找到或者我在错误的地方查找有关片段如何匹配的任何文档.当我使用香草Apollo客户端如果我关闭addTypename我使用片段时的选项我得到一个警告heuristic fragment matching going on!,如果我添加它会消失,但我的回复包含许多__typename我不需要的字段.他们为什么帮忙?
我在使用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) 我的前端是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) 使用Apollo Server编写GraphQL服务器时,如何在服务器上运行命令生成文件schema.graphql供客户端使用?注意:我没有使用 Apollo 客户端,我使用的是 Relay。
我知道我可以运行 GraphQL Playground 并从那里下载它,但我想要一个可以自动化的命令行。
我正在寻找类似于rake graphql:schema:dump使用GraphQL Ruby时的东西,您可以在服务器上运行它来生成schema.graphql.
我正在使用官方的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) 假设我们有S1、S2子图和G网关。
S1子图服务需要来自服务的一些数据S2。应该如何通过网关和模式级别进行处理?在这种通信中我们应该使用网关吗?
我们是否应该在包含内部查询和突变的每个子图中都有一个单独的模式和 Apollo 服务器?应该S1直接调用S2“内部apollo服务器”吗?
默认情况下,所有面向用户的请求都需要经过 JWT 授权,但内部通信无需经过此授权即可正常工作。
子图在公共网络上不可用,但它们在同一内部网络上运行。从技术上讲,他们可以看到对方。它们托管在 GKE 上。
node.js apollo google-kubernetes-engine graphql apollo-federation
我可以在GraphQL查询中获取多个元素吗?我有很多产品列表数据,我想在我的组件中获取三个产品.我有一系列需要的产品ID,我可以将其传递给查询吗?这是我对一个产品的查询:
query ProductInCartQuery($id: ID!){
Product(id: $id) {
id
name
price
}
}
Run Code Online (Sandbox Code Playgroud)
但我不认为我可以把它放在一个函数中,例如对三个产品执行三次.
当我在客户端上调用变异时,我收到以下警告:
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)
我错过了什么?
我是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)
这不起作用有两个原因:
所以,我需要修改我之前的架构,如下所示: …
我试图找出如何使用apollo-link-http与apollo-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没什么经验,但我想使用文件上传组件.
apollo ×10
graphql ×8
reactjs ×4
javascript ×3
express ×1
file-upload ×1
interface ×1
next.js ×1
node.js ×1
react-apollo ×1