我正在研究在React.js客户端应用程序和构建于关系SQL数据库之上的服务器应用程序之间使用GraphQL的可能性。查询应该在客户端创建,包括复杂的SQL风格的语句,如:GraphQL是否支持服务器端过滤(即在客户端建立WHERE-like查询)?
WHERE Customer.Age BETWEEN 22 AND 25
AND Order.Status = 'Active'
OR Product.Name LIKE '%foo%'
这意味着客户通常应该仅仅接收的记录(例如10,而不是10M)的一小部分。
这找好Phil Sturgeon article声明奇怪的事情:
我希望GraphQL可以帮助客户定义他们自己的范围, 过滤这些包括将适当的数据本身,这 将有助于识别范围的包括该API应添加为 便利方法。
似乎GraphQL在这种情况下并不能帮助API开发者, ,但似乎有人会在未来的版本中添加@filter来做到这一点。
未来呢?现在没有在GraphQL中过滤?我继续研究,发现this SO question和这amazing interactive Graphcool documentation。两个例子都使用一种名为filter
功能与像_gte
一组后缀的:
query combineMovies {
allMovies(filter: {
OR: [{
AND: [{
releaseDate_gte: "2009"
}, {
title_starts_with: "The Dark Knight"
}]
}, {
title: "Inception"
}]
}) {
title
releaseDate
}
}
然而,在http://graphql.org的filter
关键字不规范。 我甚至检查了Relay文档,发现没有复杂过滤的好例子(也许是因为我没有React经验)。
请阐明GraphQL的能力来构建复杂的SQL WHERE-like查询。它是标准的一部分还是仅仅是一个弱支持的特征?