GraphQL 按键值过滤数据(例如用户年龄必须是 31 岁)
GraphQL filter data by key values (e.g. users age must be 31)
我是 GraphQL 的新手,我遇到了一个相当简单的问题,我还没有找到相关文档。
我唯一想做的就是从 JSON 中获取 age
键设置为 31
的用户列表。我可以通过以下方式轻松获得所有用户:
{
user {
name
age
}
}
但我只想要 31 岁的用户,我认为我需要做的是:
{
user(age: 31) {
name
age
}
}
我只是得到了相同的结果,那么我需要做什么才能启用 age: 31
"filter"?
架构
var MyGraphQLSchema = buildSchema(`
type Query {
user(age: Int): [User]
}
type User {
id: Int
name: String
age: Int
}
`);
JSON数据
var root = {
"user": [
{
"id": 1,
"name": "binni",
"age": 31
},
{
"id": 2,
"name": "viddi",
"age": 31
},
{
"id": 3,
"name": "mási",
"age": 32
}
]
}
GraphQL 服务器
graphqlHTTP({
schema: MyGraphQLSchema,
rootValue: root,
graphiql: true
})
我正在使用 graphql.js and koa-graphql (which is similiar to express-graphql).
查询结果
{
"data": {
"user": [
{
"name": "binni",
"age": 31
},
{
"name": "viddi",
"age": 31
},
{
"name": "mási",
"age": 32
}
]
}
}
您需要 user
作为 ECMAScript 函数而不是数组来实现。
var users = [
{
"name": "binni",
"age": 31
},
{
"name": "viddi",
"age": 31
},
{
"name": "mási",
"age": 32
}
]
var root = {
"user": ({age}) =>
age === null? users:
users.filter(user => user.age === age)
}
我是 GraphQL 的新手,我遇到了一个相当简单的问题,我还没有找到相关文档。
我唯一想做的就是从 JSON 中获取 age
键设置为 31
的用户列表。我可以通过以下方式轻松获得所有用户:
{
user {
name
age
}
}
但我只想要 31 岁的用户,我认为我需要做的是:
{
user(age: 31) {
name
age
}
}
我只是得到了相同的结果,那么我需要做什么才能启用 age: 31
"filter"?
架构
var MyGraphQLSchema = buildSchema(`
type Query {
user(age: Int): [User]
}
type User {
id: Int
name: String
age: Int
}
`);
JSON数据
var root = {
"user": [
{
"id": 1,
"name": "binni",
"age": 31
},
{
"id": 2,
"name": "viddi",
"age": 31
},
{
"id": 3,
"name": "mási",
"age": 32
}
]
}
GraphQL 服务器
graphqlHTTP({
schema: MyGraphQLSchema,
rootValue: root,
graphiql: true
})
我正在使用 graphql.js and koa-graphql (which is similiar to express-graphql).
查询结果
{
"data": {
"user": [
{
"name": "binni",
"age": 31
},
{
"name": "viddi",
"age": 31
},
{
"name": "mási",
"age": 32
}
]
}
}
您需要 user
作为 ECMAScript 函数而不是数组来实现。
var users = [
{
"name": "binni",
"age": 31
},
{
"name": "viddi",
"age": 31
},
{
"name": "mási",
"age": 32
}
]
var root = {
"user": ({age}) =>
age === null? users:
users.filter(user => user.age === age)
}