根据此article,我们应避免在解析器内部更改上下文,并且在需要时也可能不存在数据。尽管我们不建议您这样做,但我们可以做到这一点,我们只需要在使用前检查数据是否存在即可。它运作良好,但现在我发现了一个例外。在下面的示例中,标签解析器被调用了两次,当我在第一个调用中将数据添加到上下文中时,仅在异步执行时,第二个调用中它不可用:
query TestQuery {
mydata {
locations: tags (type: LOCATION) {
name
}
allTags: tags {
name
}
}
}
这是解析器部分
mydata: {
tags: async (_parent, _args, _context, _info) => {
if (!_context.fetchedTags) {
_context.fetchedTags = await getItAsynchronously()
}
return _context.fetchedTags
}
}
如果我不能使用上下文,应该在哪里放置共享数据? (考虑到我可以更深入)