在 Apollo Server 中调用另一个解析器的最佳方式是什么?
What's the best way to call another resolver in Apollo Server?
假设您想从 updatedAt
解析器调用 createdAt
解析器。例如,这不起作用:
{
Review: {
createdAt: review => review._id.getTimestamp(),
updatedAt: review => review.updatedAt || this.createdAt(review)
},
}
我知道我可以创建一个从两者调用的 reviewCreatedAt()
函数,但我正在寻找一种调用 createdAt
解析器的方法。
没有调用另一个解析器的标准方法。即使您不使用箭头函数,使用 this
也不会起作用,因为当底层代码调用解析器时上下文会丢失。你可以这样做:
const resolvers = {
Review: {
createdAt: review => review._id.getTimestamp(),
updatedAt: review => review.updatedAt || resolvers.Review.createdAt(review)
},
}
不过,如果您使用的是数据模型,您可能会发现将此逻辑提升到数据模型中(使用计算字段或虚拟字段)会更容易。
假设您想从 updatedAt
解析器调用 createdAt
解析器。例如,这不起作用:
{
Review: {
createdAt: review => review._id.getTimestamp(),
updatedAt: review => review.updatedAt || this.createdAt(review)
},
}
我知道我可以创建一个从两者调用的 reviewCreatedAt()
函数,但我正在寻找一种调用 createdAt
解析器的方法。
没有调用另一个解析器的标准方法。即使您不使用箭头函数,使用 this
也不会起作用,因为当底层代码调用解析器时上下文会丢失。你可以这样做:
const resolvers = {
Review: {
createdAt: review => review._id.getTimestamp(),
updatedAt: review => review.updatedAt || resolvers.Review.createdAt(review)
},
}
不过,如果您使用的是数据模型,您可能会发现将此逻辑提升到数据模型中(使用计算字段或虚拟字段)会更容易。