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 });