1

我一直在关注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
}

我应该得到一张门票清单,但我没有定义。

4

1 回答 1

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
})

这能回答你的问题吗?

于 2018-11-23T23:08:58.260 回答