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 

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

假设你的id是一个Integer ,你可以这样做

 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) { ... } } 

或者你可以做一个function

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