当我不使用GraphQLObjectType时在哪里编写解析器?

时间:2018-09-24 17:20:30

标签: node.js graphql

我正在用express编写graphql项目。我已经这样定义了User对象:

const User = new GraphQLObjectType({
  name: 'User',
  fields: () => ({
    name: {
      type: new GraphQLNonNull(GraphQLString),
    },
    friends: {
      type: HistoricalPerformanceEvaluation,
      async resolve(user) {
        return db.users.findFriendsFor(user.id);
      },
    },
  }),
});

但是,我想使用graphql语法创建模式并按如下方式定义它:

type User {
  name: String
  friends:  [User]!
}

我现在应该在哪里编写解析器?我不使用阿波罗。

2 个答案:

答案 0 :(得分:0)

您可以使用“ graphql-tools”中的addResolveFunctionsToSchema函数来创建带有解析器函数的架构。

import { addResolveFunctionsToSchema } from 'graphql-tools';

答案 1 :(得分:0)

使用参考graphql-js库,您可以将根对象传递给GraphQL执行。在该对象上查找所有顶级查询和变异,并在从该对象返回的对象上查找嵌套的查询字段,等等。

graphql-js主页上的示例包含此对象:

// The root provides a resolver function for each API endpoint
var root = {
  hello: () => {
    return 'Hello world!';
  },
};

然后将该对象作为参数传递给graphql入口点。