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 以数组形式返回查询结果的主要内容,如果未能解决你的问题,请参考以下文章
Apollo GraphQL:用于查询返回不同类型对象的模式?
我们如何从 GraphQL 的 RequestContextHolder 获取 GraphQL 的 HttpServletRequest(DefaultGlobalContext)(使用 graphq