GraphQL 以数组形式返回查询结果

Posted

技术标签:

【中文标题】GraphQL 以数组形式返回查询结果【英文标题】:GraphQL Return Query Result as an Array 【发布时间】: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

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

【问题讨论】:

【参考方案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
)

这能回答你的问题吗?

【讨论】:

以上是关于GraphQL 以数组形式返回查询结果的主要内容,如果未能解决你的问题,请参考以下文章

GraphQL 查询工作,现在返回 null;

Apollo GraphQL:用于查询返回不同类型对象的模式?

jsp 中如何将sql查询结果以数组形式显示出来

我们如何从 GraphQL 的 RequestContextHolder 获取 GraphQL 的 HttpServletRequest(DefaultGlobalContext)(使用 graphq

GraphQL,使用 GraphiQL 的查询语法不正确

如何从 MySQL 查询中将 json 返回到 GraphQL?