如何在Apollo GraphQL Server中添加字段解析器

时间:2018-04-24 13:07:35

标签: graphql apollo apollo-server

如何在graphQL apollo语法中添加字段解析器?使用graphql语法,如果我有一个有问题的讲座,我可以这样做:

if (!this.state.sprints) return null

使用apollo graphQL的等效语法是什么?我认为我可以使用此解析器进行此类型定义:

const LectureType = new GraphQLObjectType({
  name: 'LectureType',
  fields: () => ({
    id: { type: GraphQLID },
    questions: {
      type: new GraphQLList(QuestionType),
      resolve: ({ _id }, args, { models }) => models.Lecture.findQuestions(_id),
    },
  }),
});

问题是我在每个解析器的基础上手动填充问题,而不是在架构级别。这意味着我的查询只会填充我指定的固定深度,而不是基于请求的实际查询返回参数。 (我知道这里没有1:1的基础,因为我从mongo切换到dynamo,但看起来这个解析器部分应该是独立的。)

1 个答案:

答案 0 :(得分:5)

如果以编程方式定义的resolve函数按预期工作,则可以在解析器对象中“按原样”使用它:

const typeDefs = `
type QuestionType {
  id: String,
}

type LectureType {
  id: String,
  questions: [QuestionType],
}
# And the rest of your schema...`

const resolvers = {
  LectureType: {
    questions: ({ _id }, args, { models }) => { 
      return models.Lecture.findQuestions(_id)
    }
  },
  Query: {
    // your queries...
  }
  // Mutations or other types you need field resolvers for
}