在 GraphQL 和 Apollo 中检索数组
Posted
技术标签:
【中文标题】在 GraphQL 和 Apollo 中检索数组【英文标题】:Retrieving array in GraphQL and Apollo 【发布时间】:2019-01-31 10:31:12 【问题描述】:所以我已经使用 Graphql 和 apollo 设置了一个 api,并设法将一个字符串数组导入 mongoDB ...现在我正在使用 Apollo 查询数据以做出反应,但我似乎无法找到如何检索它一个
error:[GraphQL error]: Message: String cannot represent an array value: [pushups,situps], Location: [object Object], Path: wods,0,movements
我的架构设置为:
const WodType = new GraphQLObjectType(
name: 'Wod',
fields: () => (
id: type: GraphQLID ,
name: type: GraphQLString ,
movements: type: GraphQLString ,
difficulty: type: GraphQLString ,
group:
type: GroupType,
resolve(parent, args)
return Group.findById(parent.groupId);
) );
我的突变为:
const Mutation = new GraphQLObjectType(
name: 'Mutation',
fields:
addWod:
type: WodType,
args:
name: type: new GraphQLNonNull(GraphQLString) ,
movements: type: new GraphQLList(GraphQLString) ,
difficulty: type: new GraphQLNonNull(GraphQLString) ,
groupId: type: new GraphQLNonNull(GraphQLID)
,
resolve(parent, args)
let wod = new Wod(
// Use model to create new Wod
name: args.name,
movements: args.movements,
difficulty: args.difficulty,
groupId: args.groupId
);
// Save to database
return wod.save();
该数组是“运动”下的字符串数组...非常感谢任何有助于将其导入 React 的查询...这里是前端的当前查询...使用 Apollo Boost
const getWodsQuery = gql`
wods
id
name
movements
difficulty
`;
【问题讨论】:
【参考方案1】:不确定它是否仍然相关,我没有重新创建代码,但问题可能是,您返回的“运动”只是“字符串”,而不是输出对象类型 Wod 中的字符串数组。这只是基于您传递给突变的参数(即字符串列表)做出的假设。修复应该只是修改 Wood 类型如下
const WodType = new GraphQLObjectType(
name: 'Wod',
fields: () => (
id: type: GraphQLID ,
name: type: GraphQLString ,
movements: type: new GraphQLList(GraphQLString) ,
difficulty: type: GraphQLString ,
group:
type: GroupType,
resolve(parent, args)
return Group.findById(parent.groupId);
)
请注意,这只是我的假设,因为我不知道您的数据是如何存储的,但根据错误消息它可能是正确的。我写了一篇关于在 GraphQL 模式中实现列表/数组的文章,因为我看到很多人都在为类似的问题而苦苦挣扎。你可以在这里查看https://graphqlmastery.com/blog/graphql-list-how-to-use-arrays-in-graphql-schema
【讨论】:
以上是关于在 GraphQL 和 Apollo 中检索数组的主要内容,如果未能解决你的问题,请参考以下文章
在 Apollo GraphQL 中跨本地和远程模式的嵌套数组中建模数据的最佳方法?
apollo (graphQL) - 如何在查询中发送对象数组
React + Apollo:GraphQL 错误数组未传递到组件中
在 reactJS 中使用动态字段的 Apollo 客户端 graphql 查询