我一直关注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
}
我应该得到一张门票清单,但是我不确定。
答案 0 :(得分:0)
我遇到了同样的问题,我想在不使用任何jsx的情况下使用查询,解决方案是使用ApolloClient,在您的应用中的某个时候,您将使用ApolloProvider,您需要给它一个ApolloClient实例作为道具,您要做的就是导出该客户端,然后您就可以在其他任何地方(不仅在ApolloProvider中)使用它。 这是一个例子
这是初始化Apollo客户端的地方。
import { ApolloClient } from 'apollo-client';
.
.
.
initApolloClient ({ uri }) => {
.
.
.
return new ApolloClient({
link,
cache,
});
}
export default initApolloClient
import initApollo from './initApollo';
client = initApollo({ uri: 'http://localhost:4000' });
client.query(({query: SOME_QUERY, variables: {id: 2}) => {
// return data
})
这是否回答了您的问题?