Как добавить вложенный преобразователь в схему?

Допустим, мой запрос выглядит так:

query {
  post {
    id
    user { id, name } 
  }
}

И карта резольвера выглядит так:

{
  Query: {
    post: myPostResolverFunc,
  }
}

Как я могу добавить дополнительный «вложенный» преобразователь для post.user? Я пробовал это, но это не работает:

addResolveFunctionsToSchema(schema, {
  Query: {
    post: {
      user: postUserResolveFunc,
    },
  }
});

person user606521    schedule 22.03.2017    source источник


Ответы (1)


Вам просто нужно написать преобразователь для вашего поля. Предполагая, что ваша схема выглядит примерно так:

type Post {
  id: ID!,
  user: User
}

type User {
  id: ID!,
  username: String!
}

type Query {
  post(id: ID!): Post  #assuming you want to request a simple post here
}

Вы можете написать резольверы следующим образом:

addResolveFunctionsToSchema(schema, {
  Post: {
    user(root) {
      return getUserById(root.user)
    }
  }
  Query: {
    post(root, args, context) {
      return getPostById(args.id)
    }
  }
});
person Pierre Criulanscy    schedule 22.03.2017