【问题标题】:Apollo Federation Entity Reference Not Working Properly阿波罗联盟实体参考工作不正常
【发布时间】:2021-06-01 13:13:42
【问题描述】:

我一直在与 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 函数,但它没有。我是否缺少一些东西才能使其正常工作?

【问题讨论】:

    标签: javascript apollo


    【解决方案1】:

    这最终成为 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 } });
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-12-28
      • 2019-12-09
      • 2021-10-21
      • 2020-07-17
      • 2022-01-21
      • 2021-01-05
      • 2019-02-15
      • 2018-04-26
      • 2014-06-10
      相关资源
      最近更新 更多