是否可以根据条件返回GraphQL中的字段?
使用GraphQL,是否可以根据条件返回一些字段?例如:是否可以根据条件返回GraphQL中的字段?,graphql,apollo,react-apollo,Graphql,Apollo,React Apollo,使用GraphQL,是否可以根据条件返回一些字段?例如: [{ name: "Foo", age: 38 }, { name: "Bar", age: 50 }] 我希望总是返回name,但仅当name是Foo时才返回age。结果如下: [{ name: "Foo", age: 38 }, { name: "Bar" }] 在类型定义中,可以设置类型的必需和非必需属性。例如,您的类型可以定义为: type Person { na
[{
name: "Foo",
age: 38
},
{
name: "Bar",
age: 50
}]
我希望总是返回name
,但仅当name是Foo
时才返回age
。结果如下:
[{
name: "Foo",
age: 38
},
{
name: "Bar"
}]
在类型定义中,可以设置类型的必需和非必需属性。例如,您的类型可以定义为:
type Person {
name: String!
age: Int
}
您将有一个查询扩展,它沿着以下几行定义:
extend type Query {
getPeople: [Person]
}
您将有逻辑返回不同的部分,这将是您的解析器代码。可能是这样的:
getPeople(obj, input, context) {
// Make a request for the information from db or wherever it is stored
// The sql or api request can do the filtering, if not it can be done after it's saved
const people = context.Users.get.People();
// Map over fields for expected return per user based on logic
const filteredPeople = people.map(person => {
if (person.name === "Foo") {
return { name: person.name, age: person.age }
} else {
return { name: person.name };
}
});
return filteredPeople;
};
简而言之,解析器允许您修改返回的信息GraphQL支持可选字段和必填字段,您能解释一下您的意思吗?我想使用一个条件检索某些字段的数据,例如:query{users{name age@include(if:…)}我只想在名称为“Foo”时返回字段年龄。返回值应为:[{name:“Foo”,age:38},{name:“Bar”}]