Graphql 复杂布尔查询
Graphql complex boolean queries
我从您可以搜索的文档中了解了通过 graphql 查询的原理:
{
"hero": {
"name": "R2-D2"
}
}
但是你想做一些更复杂的事情怎么样:
{
"hero": {
"name": "R2-D2 AND C-3PO AND BB-8 NOT K-2SO"
}
}
有什么方法可以传递这样的字符串并获得适当的结果吗?
没有,没有。
您可以通读 GraphQL spec 并查看其定义和未定义的内容。特别是规范没有定义任何类型的过滤、任何类型的表达式语言或任何类型的布尔组合器。 (如果没有字段解析器明确添加它,就没有原生的方式来表达 SQL 的 WHERE NAME='foo'
的等价物。)
GraphQL 允许的字段参数是完全开放的,您可以在其上构建更丰富的查询,但这对某些应用程序或库来说是非常特定的。两个突出的例子是 GitHub GraphQL API (which tends to allow exact-match queries on selected fields but nothing richer) and the Prisma API(它有一个涉及的多级对象方案来复制 SQL 查询)。
我从您可以搜索的文档中了解了通过 graphql 查询的原理:
{
"hero": {
"name": "R2-D2"
}
}
但是你想做一些更复杂的事情怎么样:
{
"hero": {
"name": "R2-D2 AND C-3PO AND BB-8 NOT K-2SO"
}
}
有什么方法可以传递这样的字符串并获得适当的结果吗?
没有,没有。
您可以通读 GraphQL spec 并查看其定义和未定义的内容。特别是规范没有定义任何类型的过滤、任何类型的表达式语言或任何类型的布尔组合器。 (如果没有字段解析器明确添加它,就没有原生的方式来表达 SQL 的 WHERE NAME='foo'
的等价物。)
GraphQL 允许的字段参数是完全开放的,您可以在其上构建更丰富的查询,但这对某些应用程序或库来说是非常特定的。两个突出的例子是 GitHub GraphQL API (which tends to allow exact-match queries on selected fields but nothing richer) and the Prisma API(它有一个涉及的多级对象方案来复制 SQL 查询)。