【发布时间】:2017-10-03 22:33:11
【问题描述】:
我正在尝试使用具有各种字段的类型指定 GraphQL 模式,并且还允许您使用相同的参数递归地附加 OR: [...]。我已经让它像这样工作了
input BookFilters {
_id: String
title: String
title_contains: String
title_startsWith: String
title_endsWith: String
OR: [BookFilters]
}
type Query {
allBooks(_id: String
title: String
title_contains: String
title_startsWith: String
title_endsWith: String
OR: [BookFilters]
): [Book]
}
效果很好,这个查询
{
allBooks(title_endsWith: "1", OR: [{ title: "2" }, {title:"3"}, {OR: [{title_contains: "Q"}, {OR:[{title:"Q"}]}]}]) {
_id
title
}
}
通过就好了。
我的问题是,有什么方法可以删除重复项吗?理想情况下,如果
type Query {
allBooks(...BookFilters): [Book]
}
有效,但似乎无效。
编辑 - 评论带来了片段。它们只能被声明为 off of 一种类型,对吧?所以我仍然需要创建一个新类型来列出我的所有查询参数,然后从中制作一个片段,重新列出所有字段?
即使不是这样,GraphQL 似乎仍然不喜欢在输入参数上传播。
fragment BookFiltersFragment on BookFilters {
_id
}
type Query {
allBooks(...BookFiltersFragment): [Book]
}
... 上出现的错误
【问题讨论】:
-
这让我想起了片段。看看这个:dev.apollodata.com/react/fragments.html
-
抱歉,这是 Apollo,如果您正在使用它,请查看原版文档。
-
是的 - 我看到了片段。它们只在 Type 上声明,对吧?无论如何,我似乎仍然无法在查询参数上传播片段
-
你已经完成了我的帮助;干得好,这是你发现的一个相当野兽模式的考虑因素。
标签: javascript graphql apollo