【发布时间】:2020-03-16 03:22:11
【问题描述】:
我正在使用apollo-datasource-rest 从 REST API 中获取数据。从文档中,您可以像这样集成数据源:
const server = new ApolloServer({
typeDefs,
dataSources: () => ({
ds1: new Datasource1()
}),
resolvers: {
Post: {
comments: (post, _args, { dataSources }) => {
dataSources.ds1.getComments(post.id)
}
}
}
})
我的问题是我更喜欢使用类来实现解析器,所以对于 Post,我有这样的东西:
class Post {
constructor(public id: number, public title: string, public content: string) {}
comments() {
return new Datasource1.getComments(this.id)
}
}
我想知道这是否受支持?
Datasource1 的多个实例可以共享同一个缓存吗?我不这么认为。
是否可以在其构造函数之外访问ApolloServerdataSources?
【问题讨论】:
-
您可以在 cmets 方法中访问
arguments、context和resolveInfo:comments(arguments, context, resolveInfo) { context.datasources... }。 -
太好了,到目前为止我没有在任何文档中看到它。谢谢大佬!
-
我可能会在这里发布一个答案,用一些更好的词来包装这个:)
-
Op 在这里讨论解析器对象。这就是问题的全部意义所在。在解析器对象中,根对象是
this。
标签: typescript graphql apollo-server