在 GraphQL 中,如何最好地设计一种“API 查询语言”来使用运算符过滤项目集合?
例如,在 REST 中,您可以使用诸如
之类的参数 /family/people?height="192"&weight[]=">=65"&weight[]="<=100"
在 GraphQL 中,在 GraphQL 层之外实现查询逻辑似乎违背了最佳实践:
{
family {
people(height: 192, weight: ['>=65','<=100']) {
givenName
surName
age
}
}
}
尽管执行以下操作似乎过于冗长且不太干燥:
{
family {
people(height: 192, weightGte: '65', weightLte: '100') {
givenName
surName
age
}
}
}
对于具有运算符(如> < >= <= == != *
)的查询参数是否有约定?
最佳答案
我不会说这本身是一个 graphQL 问题,而是 - 您将选择在解决方案中使用的方法。
假设我们正在谈论 JS(考虑到你的标签),我会用一个函数来包装你的查询,类似于:
function getPeople(height, weight) {
let [0: weightGte, 1: weightLte ] = weight;
return {
family {
people(height, weightGte, weightLte) {
givenName
surName
age
}
}
}
}
根据您的 js 风格和创建查询文档的方式,您可以简单地使用不同的参数调用它。
如果您重复使用相同的参数,则可以缓存文档并使用缓存的版本:
const commonUseCase = getPeople(192, [65, 100]);
//elsewhere in your code
query(commonCase).then(...
关于javascript - 将查询参数与集合运算符一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49013872/