如何在 RedwoodJS 上创建字段解析器

gfp*_*eco 3 redwoodjs

RedwoodJS 自动将 GraphQL 查询解析器映射到api/src/services. 如何为给定的 GraphQL 类型创建字段解析器?

假设我有这个架构:

type Person {
  name: string!
  birthDate: DateTime!
  age: Int!
}
Run Code Online (Sandbox Code Playgroud)

但只有namebirthDate存储在数据库中。

使用graphql-tools我会这样编写我的解析器:

const resolvers = {
  Query: { ... },
  Mutation: { ... },
  Person: {
    age(person) {
      return new Date().getFullYear() - person.birthDate.getFullYear();
    },
  },
};
Run Code Online (Sandbox Code Playgroud)

PS:我知道年龄公式是错误的。

PS2:为了简单起见,我在这里使用年龄,想象一下计算或从数据库获取数据的成本很高。

pet*_*erp 6

它几乎与您使用 的方式相同graphql-tools

您导出一个与您在服务中的类型同名的对象:

// services/person.js
export const Person = {
    age: (_args, { root }) {
      return new Date().getFullYear() - root.birthDate.getFullYear();
    },
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,您还可以resolversperson.sdl.js文件中导出 a (但服务优先):

// graphql/person.sdl.js

export const schema = gql`/* ... */`

export const resolvers = {
  Query: {},
  Mutation: {},
  Person: {},
}
Run Code Online (Sandbox Code Playgroud)