在 Apollo Server 中调用另一个解析器的最佳方法是什么?

Lor*_*ren 7 apollo graphql apollo-server

假设您想createdAtupdatedAt解析器调用解析器。例如,这不起作用:

{
  Review: {
    createdAt: review => review._id.getTimestamp(),
    updatedAt: review => review.updatedAt || this.createdAt(review)
  },
}
Run Code Online (Sandbox Code Playgroud)

我意识到我可以创建一个reviewCreatedAt()从两者调用的函数,但我正在寻找一种调用createdAt解析器的方法。

Dan*_*den 2

没有调用另一个解析器的标准方法。this即使不使用箭头函数,使用也不起作用,因为当底层代码调用解析器时,上下文会丢失。你可以这样做:

const resolvers = {
  Review: {
    createdAt: review => review._id.getTimestamp(),
    updatedAt: review => review.updatedAt || resolvers.Review.createdAt(review)
  },
}
Run Code Online (Sandbox Code Playgroud)

但是,如果您使用数据模型,您可能会发现将此逻辑提升到数据模型中(使用计算字段或虚拟字段)会更容易。