我是一个学习graphQL的java程序员。我有下面的示例数据集,其中注释包含postId,但post没有注释信息。
comments
{
"postId": 1,
"id": 1,
"name": "id labore ex et quam laborum",
"email": "Eliseo@gardner.biz",
"body": "laudantium enim quasi"
}
post
{
"userid": 3,
"id": 1,
"title": "Post 1"
}使用阿波罗联邦
{ "data": { "posts": [ { "userid": 3, "id": 1, "title": "Post 1" "comments": { "id": 1, "name": "id labore ex et quam laborum", "email": "Eliseo@gardner.biz", "body": "laudantium enim quasi" } } ] }
1. I need to basically use following algorithm - get all comments
- Filter comments with given postId
- collect all matching comments and return from resolver function下面是post.js代码
键入Post @key(字段:"id"){ id: ID!用户标识: Int!标题:弦乐!注释:注释}扩展类型注释@key(字段:"id“){ id: ID!@external } const解析器={ Post:{Post(Post){ return ({ __typename:"Post",postId:post.id });查询:{ post:(root,{ id },{ dataSources }) => dataSources.mvrpAPI.getAPost(id),post:(root,args,{ dataSources }) => dataSources.mvrpAPI.getAllPosts()}
使用上面解析器的注释方法,我得到了以下错误
"message": "Expected Iterable, but did not find one for field
\"Post.comments\".",然后,我尝试了下面的解析器方法,这不能识别mvrpAPI,即使它可以在解析器的查询部分工作。
async comments(post, {dataSources}){
const allComments = dataSources.mvrpAPI.getAllComments();;
return allComments.postId.findAll(
{ __typename: "Post", postId:post.id }
);
}
}有人可以帮助如何写上面提到的逻辑(在第2点)的图形on。
发布于 2020-05-22 17:22:17
以下是我如何解决上述问题的方法
异步注释(post,{postid},{dataSources}){ const响应=等待dataSources.mvrpAPI.getAllComments();返回response.filter(注释=> comment.postId === post.id);},
发布于 2020-05-21 13:10:51
您将注释声明为Post架构上的列表,并在解析器上返回单个对象
返回({ __typename:"Post",postId:post.id });
这就是“预期的Iterable”错误的原因。
我不太熟悉那个数据库api,但是对于大多数api来说,这并不难。
在猫鼬里
async (post,_, {model}) => model.Comment.find({postId: post.id})https://stackoverflow.com/questions/61921500
复制相似问题