标签: apollo

无法使用 gradlew 命令下载 json 架构

我不知道如何使用该命令将我的架构gradlew转换为文档中指定的文件。GraphQLJSON

CMD我在项目文件夹中打开,运行gradlew命令一次,它给了我这个错误:

Project 'module' not found in root project gradlew

我在项目中创建了一个名为“module”的模块,现在它抛出以下错误:

Task 'downloadApolloSchema' not found in project ':module'.

我已经将所有依赖项添加到最新版本(截至发布时为 2.0.0),所以我不知道为什么会发生这种情况。我已经在网上搜索过,但没有找到任何关于此的信息......

这是我试图在以下位置发出的命令CMD

C:\Users\myuser\AndroidStudioProjects\GraphQLApp\app>..\gradlew :module:downloadApolloSchema -Pcom.apollographql.apollo.endpoint=https://graphql-udemy-android.herokuapp.com/graphql -Pcom.apollographql.apollo.schema=src/main/graphql/com/example/schema.json
Run Code Online (Sandbox Code Playgroud)

我必须转到上一个目录 ( ..\),因为该gradlew命令位于我的应用程序文件夹上方。

我使用的是 Windows,我的 Gradle 版本是 6.4。

apollo apollo-android

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

Apollo 客户端 - 在终止链接上调用 concat,这不会产生任何效果

我有以下阿波罗链接:

 const link = ApolloLink.from([
    serializingLink,
    httpAuthLink,
    queueLink,
    retryLink,
    errorLink,
    uploadLink,
    httpLink
  ]);

Run Code Online (Sandbox Code Playgroud)

它们都具有正确的设置添加新链接后,该错误开始出现在控制台中:

Error: You are calling concat on a terminating link, which will have no effect
Run Code Online (Sandbox Code Playgroud)

通过阅读另一期,我发现这可能与数组内部链接的顺序有关。

apollo graphql apollo-client

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

我可以使用 Strapi 和 GraphQL 创建多个相同类型的元素吗?

我可以使用 Strapi 和 GraphQL 创建多个相同类型的元素吗?例如 -

createMultipleFoo mutation(data: [
    nameOfFoo: "ooaoaoa",
    weightOfFoo: "aododo"
    ], ....)
Run Code Online (Sandbox Code Playgroud)

javascript apollo graphql strapi

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

如何将变量传递到 graphql/apollo 的 cy.request 中而不需要字符串插值

目前,以下方法有效,但我知道这是不好的做法,我不想在将来因这种实现而遇到问题。

export const loginQuery = ({ email, password }) => `
  mutation login {
    login(email: "${email}", password: "${password}") {
      authToken
    }
  }
`;

export default ({ url, method, userPath }) => {
  cy.fixture(userPath).then(res => {
    const query = loginQuery(res);
    cy.request({
      method,
      url,
      headers: { 'Content-Type': 'application/json' },
      body: { query },
      failOnStatusCode: false
    });
  });
};
Run Code Online (Sandbox Code Playgroud)

如何正常传入变量而不是通过字符串插值手动执行?

我这样写的原因是因为我不能使用react-apollo/ graphql-tag。我已经尝试过,但是graphql需要react-apollo将其包装在一个不适用于此 cypress 上下文的组件中。

注意:上述实现不适用于对象/数组。我需要手动传入突变中写出的对象中的特定键,而不仅仅是一个变量来表示整个对象。这显然是一个问题。

javascript string-interpolation apollo graphql cypress

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

useQuery 未返回最新数据

    \n
  • 我有一个主页 ( /home),其中包含卡片形式的产品列表(通过\n检索useQuery),每个卡片都有一个赞成按钮
  • \n
  • 当我单击“投票”时,\n 触发投票突变 + UI 更改以更新投票\n计数
  • \n
  • 当我转到另一个页面,然后返回到/home,\nuseQuery不会\xe2\x80\x99 检索到具有正确票数的产品
  • \n
  • 但是,当我检查数据库时,所有产品都有正确的投票\n计数。
  • \n
\n

为什么useQuery在我刷新另一页之前\n不返回正确的金额?

\n

作为参考,如下:

\n
const Home = props => {\n  const {data, loading, error} = useQuery(GET_PRODUCTS_LOGGED_IN, {\n    variables: {\n      userid: props.userid\n    }\n  });\n  \n  console.log(\n    'data', data.products // this data is outdated after I go from /home -> /profile -> /home\n  );\n\n  return (\n    <Container>\n      {_.map(data.products, product => (\n        <VoteButton\n          hasVoted={product.hasVoted}\n          likes={product.likes}\n          productid={product.productid}\n        />\n …
Run Code Online (Sandbox Code Playgroud)

apollo reactjs graphql

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

使用 Apollo-Client 重新获取查询会引发错误

我正在使用 Apollo-client 将突变发布到我的 graphql 服务器。突变完成后,我想重新获取该数据。我尝试使用挂钩refetchQueries中的参数useMutation,但是当我执行代码时收到此错误:

查询选项是必需的。您必须在查询选项中指定您的 GraphQL 文档。

这是发送突变的代码行:

const [addUser, { data, loading, error }] =
    useMutation(ADD_USER_QUERY, {
        refetchQueries:[GET_USERS_QUERY]
    });
Run Code Online (Sandbox Code Playgroud)

这是我的查询(硬编码参数是为了查看问题是否是由于传递变量引起的):

export const ADD_USER_QUERY = gql`
    mutation {
        createUser(name: "Albert Einstein", email: "albert@yahoo.ca") {
            id
            name
        }
    }
`;
Run Code Online (Sandbox Code Playgroud)

谢谢你!

apollo reactjs graphql

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

Graphql-Shield 劫持错误

在解析器中,throw new createError.BadRequest("bad input")错误被劫持Graphql-shield并显示为

{
    "errors": [
        {
            "message": "Not Authorised!",
            "locations": [
                {
                    "line": 2,
                    "column": 3
                }
            ],
            "path": [
                "myMutation"
            ],
            "extensions": {
                "code": "INTERNAL_SERVER_ERROR",
                "exception": {
                    "stacktrace": [
                        "Error: Not Authorised!",
Run Code Online (Sandbox Code Playgroud)

这是 Apollo 服务器设置

    const schema = buildSubgraphSchema([
      { typeDefs: await typeDefs(), resolvers },
    ]);
    const apolloServer = new ApolloServer({
      schema: applyMiddleware(schema, permissions),
      context: async ({ req, res }) => new AuthenticatedContext(req, res)
    });
Run Code Online (Sandbox Code Playgroud)

如何返回实际发生的错误?

apollo graphql apollo-server graphql-shield

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

Nextjs13 Graphql apollo 配置

我正在尝试使用 nextjs13 设置 graphql 前端应用程序,但使用新的文件夹结构,因为没有 _app.tsx 我想知道如何设置

在我们像这样包装整个应用程序之前

 <ApolloProvider client={client}>
    <Component {...pageProps} />
  </ApolloProvider>
Run Code Online (Sandbox Code Playgroud)

现在如何设置呢?

apollo next.js next.js13

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

如何在 apollo-server 4 中传递上下文值?

在 apollo-server 3 中,我可以在创建 apollo 服务器时设置上下文,如下所示:

const server = new ApolloServer({
    debug: true,
    schema: executableSchema,
    context: contextFunction(secretValues),
...
Run Code Online (Sandbox Code Playgroud)

我的contextFunction看起来像这样:

export const contextFunction =
  (secretValues: AwsSecretValues) =>
  async ({ req, res }: ExpressContext) => {
    const sessionId = extractSessionIdFromCookies(req.headers.cookie);
    const session = await validateSession(
      sessionId || req.headers.authorization,
    );

    if (session) {
      session.set({ expiresAt: Date.now() + DEFAULT_SESSION_EXTEND_TIME });
      await session.save();

      generateCookie(session._id, res);
    }

    return {
      pubsub,
      dataLoaders: dataLoaderFactory(),
      session,
      req,
      res,
      secretValues,
    };
  };
Run Code Online (Sandbox Code Playgroud)

它很有用,因为我不必在每个解析器上独立刷新会话,并且每个解析器都有它的最新版本,而且我还能够传递一堆其他有用的东西。

据我所知,apollo-server 4 中没有此选项。但是,如果您无法设置上下文(除了将内容深入到子解析器),那么上下文的全部意义是什么?一定有办法,但找不到办法。

express apollo graphql apollo-server

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

在 GraphQL 模式之间共享结构

我有一个 Apollo GraphQL 服务器与 API 通信,返回响应的大致结构如下:

{
  "pagination": {
    "page": 1,
    // more stuff
  },
  sorting: {
    // even more stuff
  },
  data: [ // Actual data ]
}
Run Code Online (Sandbox Code Playgroud)

这个结构将在我广泛使用的这个 API 的几乎所有响应中共享。data大多数情况下将是一个数组,但也可以是一个对象。

我如何以有效的方式编写它,以便我不必在模式中的每个数据类型上重复所有这些paginationsorting字段?

非常感谢!

relay apollo graphql graphql-js react-apollo

0
推荐指数
1
解决办法
998
查看次数