GraphQL让用户使用GraphQL工具

我有一个使用ExpressJS的GraphQL服务器。 这是使用GraphQL-Tools的模式:

import UserModel from '../models/User' export const Schema = ` type User { id: Int! firstName: String lastName: String } type Query { users: [User] } schema { query: Query } ` export const resolveFunctions = { Query: { users() { return UserModel.findAll() } } } 

没有GraphQL的工具,我可以得到完整的用户和特定的用户列表,但现在当我使用GraphQL工具,我不知道如何获得某个用户的ID。

除了官方文档,我没有在GraphQL工具上find任何资源,所以我希望这可以帮助其他人find答案。

谢谢!

你应该添加一个查询:

 user(id: String!): User 

和处理程序:

 user(root, args, ctx) { return UserModel.findOne({id: args.id}); } 

(您可能需要调整参数types和调用语义,我只是概述了所需的步骤)。

如果你想看一个有效的例子,你可以看看一个graphQL入门项目 。 我最近添加了一个非常类似的查询。

也许你应该看看graphqly 。 这是一个build立在graphql-tools之上的抽象,可帮助您更轻松地开发Graphql服务。 以下是graphqly的示例代码:

 import graphly from "graphqly"; const gBuilder = graphly.createBuilder(); // define types, inputs ... (in any order) gBuilder.type("Products").implements("List").def(` products: [Product]! `); gBuilder.type("Product").def(` id: ID! name: String! link: String price: Int `); gBuilder .query(` products(limit: Int = 20, offset: Int = 0, filter: ProductFilter): Products `) .resolve((root, args, context) => { // your resolver here });