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

时间:2019-05-31 23:55:56

标签: graphql apollo apollo-server

说您想从createdAt解析器调用updatedAt解析器。例如,这不起作用:

{
  Review: {
    createdAt: review => review._id.getTimestamp(),
    updatedAt: review => review.updatedAt || this.createdAt(review)
  },
}

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

1 个答案:

答案 0 :(得分:0)

没有标准方法可以调用另一个解析器。即使您不使用箭头功能,也无法使用this,因为当底层代码调用解析器时,上下文会丢失。您可以执行以下操作:

const resolvers = {
  Review: {
    createdAt: review => review._id.getTimestamp(),
    updatedAt: review => review.updatedAt || resolvers.Review.createdAt(review)
  },
}

但是,如果您使用的是数据模型,则可能会发现将这种逻辑引入数据模型(使用计算字段或虚拟字段)会更容易。