微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Apollo 联邦实体参考无法正常工作

如何解决Apollo 联邦实体参考无法正常工作

一段时间以来,我一直在与阿波罗实体及其参考资料搏斗。我遵循 this article 来实现文章文章服务)与其作者(人员服务)之间的关系。相关代码如下:

// Article service type deFinitions
export const typeDefs = gql`
  type Article @key(fields: "_id") @key(fields: "slug") {
    _id: ID!
    author: Person!
    category: String
    content: String
    media: String
    published: Boolean
    slug: String!
    subtitle: String
    title: String!
  }

...
`;
// Article service resolvers
...
Article: {
  author: <IArticleAuthor> ((article) => {
    return { __typename: 'Person',_id: article.author };
  }),},...
// Person service resolvers
...
__resolveReference: (reference: { _id: string }) => {
  return Person.findOne({ _id: { $eq: reference._id }});
},...

出现的问题是,当我实际发出请求时,我只获取文章服务解析器页面 { __typename: 'Person',_id: article.author }; 中返回的对象。我原以为一旦我提出获取文章的请求就会调用 __resolverReference 函数,但它没有。是否有什么我缺少的东西才能让它正常工作?

解决方法

它最终成为 Person 服务中的一个问题。我将 __resolveReference 方法附加到顶级解析器对象,而不是在 Person 属性中。

export const resolvers = {
  __resolveReference: (reference) => Person.findOne({ _id: { $eq: reference.id } });
}

对比

export const resolvers = {
  Person: {
    __resolveReference: (reference) => Person.findOne({ _id: { $eq: reference.id } });
  }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。