【问题标题】:GraphQL Return Query Result as an ArrayGraphQL 以数组形式返回查询结果
【发布时间】:2019-01-16 05:26:52
【问题描述】:

我一直在关注https://www.howtographql.com/ 上的 React-Apollo 和 Node.js GraphQL 教程,并且能够启动并运行演示。

我现在想做的是将查询结果作为数组返回。

我的 schema.graphql 文件如下所示:

type Query{
  pullTickets (where: TicketWhereInput): [Ticket!]!
}

解析器看起来像:

const resolvers = {
    Query: {
      pullTickets: (root, args, context, info,) => {
        return context.db.query.tickets({}, info)
      }
    }
  }

到目前为止我尝试过的是:

import React, { Component } from 'react';
import Query from "react-apollo/Query";
import gql from "graphql-tag";

const GET_TICKETS = gql`
  query getTickets($startDate: DateTime!, $endDate: DateTime!) {
    pullTickets (where: {
        AND:[{DateCloseDate_gt: $startDate}, {DateCloseDate_lt: $endDate}]})
      {
        id
      }
  }
`;

export default function GetTickets ( startDate, endDate ) {

    var temp = [];

    <Query query={GET_TICKETS} variables={{ startDate, endDate }} >

      {({ loading, error, data }) => {

        if (loading) return 'Loading...';
        if (error) return `Error!: ${error}`;

        // This doesn't seem to do anything
        temp = data.pullTickets

      }}

    </Query>

    // temp is showing up as "undefined" in the console
    console.log(temp);

    return temp
}

我应该得到一个门票列表,但我没有定义。

【问题讨论】:

    标签: reactjs graphql apollo react-apollo prisma


    【解决方案1】:

    如何在不使用 jsx 的情况下使用 client.query 或 client.mutation

    我有同样的问题,我想在不使用任何 jsx 的情况下使用查询,解决方案是使用 ApolloClient,在您的应用程序中的某个时刻,您将使用 ApolloProvider,您需要给它一个 ApolloClient 的实例作为道具,您所要做的就是导出该客户端,然后您就可以在其他任何地方使用它,而不仅仅是在 ApolloProvider 中。 这是一个例子

    initApollo.js

    这是 Apollo 客户端初始化的地方。

    import { ApolloClient } from 'apollo-client';
    .
    .
    .
    initApolloClient ({ uri }) => {
    .
    .
    .
     return new ApolloClient({
       link,
       cache,
     });
    }
    export default initApolloClient
    

    useClientWithoutJsx.js

    import initApollo from './initApollo';
    
    
    client = initApollo({ uri: 'http://localhost:4000' });
    client.query(({query: SOME_QUERY, variables: {id: 2}) => {
       // return data
    })
    

    这能回答你的问题吗?

    【讨论】:

      猜你喜欢
      • 2021-03-06
      • 1970-01-01
      • 2018-10-08
      • 1970-01-01
      • 1970-01-01
      • 2020-10-23
      • 2017-09-17
      • 1970-01-01
      • 2018-12-10
      相关资源
      最近更新 更多