假设我有来自外部API的数据称为“帖子”。 “帖子”中的每个帖子都有“标题”和“内容”字段。我无法控制这个外部API,“帖子”就是这样。
在我的应用程序中,在本地,我想为每个帖子添加更多字段。这些字段是“类别”和“标签”。
然后,我想使用graphql查询我的后端API,因此我的查询从外部API和本地API中提取数据。例如
{
post (id: 2){
title, # external
content, # external
category, # local
tags # local
}
}
我怎样才能完成它? 我应该制作第三段数据(模型),以某种方式将外部和本地数据合并在一起,然后查询这些数据?或者,我的本地字段是否应该以某种方式从外部节点提取ID并将它们与自己的数据一起保存在这些字段中?
答案 0 :(得分:0)
非常简单,您可以创建一个函数,在调用本地数据的同时调用外部API,并返回一个合并对象:
function fetchPost(postId) {
return Promise.all([
getPostFromExternalAPI(postId),
getCategoryForPost(postId),
getTagsForPost(postId),
])
.then(([ post, category, tags ]) => {
return Object.assign(post, {
category,
tags,
});
});
}
然后,您的帖子字段解析器将具有以下形状:
const postFieldResolver = (_, args, context) => fetchPost(args.id)
这是性能方面的最佳选择。