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