GraphQL - 显示列表或单个对象

时间:2017-02-18 21:11:35

标签: node.js express graphql

我已设法通过GraphQL获取以下数据:

 {
  "data": {
    "city": {
      "name": "Eldorado",
      "users": [
        {
          "username": "lgraham1"
        },
        {
          "username": "ehowell"
        },
        {
          "username": "cbauch"
        }
      ]
    }
  }
}

我有QueryType,CityType和UserType。在我的QueryType中,我通过GraphQLList(UserType)获取城市并显示用户。如果我想在提供ID时显示单个用户,我该怎么办?

我的API如下所示:

all cities:
  /cities/

single city:
  /cities/:city_id

users for particular city:
  /cities/:city_id/users

single user:
  /cities/:city_id/users/:user_id

1 个答案:

答案 0 :(得分:1)

您需要向主Query对象添加user查询。

假设您的idInteger,您可以这样做

const Query = new GraphQLObjectType({
  name: 'RootQuery',
  fields: {
    // ...
    user: {
      type: User,
      args: {
        id: {
          type: new GraphQLNonNull(GraphQLInt)
        }
      },
      resolve: function(rootValue, args) {
        return db.users.findOne(args)
      }
    }
  }
})

const Schema = new GraphQLSchema({
  query: Query,
  // ...
});

然后您可以使用

进行查询
{
  user (id: 12345) {
    ...
  }
}

或者你可以创造一个功能

query findUser ($id: Int!) {
  user (id: $id) {
    ...
  }
}