GraphQL返回查询结果作为数组

时间:2018-08-08 20:38:33

标签: reactjs graphql apollo react-apollo prisma

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

我应该得到一张门票清单,但是我不确定。

1 个答案:

答案 0 :(得分:0)

如何在不使用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
})

这是否回答了您的问题?