首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GQL不返回结果

GQL不返回结果
EN

Stack Overflow用户
提问于 2019-01-24 10:00:05
回答 1查看 618关注 0票数 0

我正在练习GQL,我在Playground中显示数据时发出了问题。

我尝试点击jsonplace夹子api,检索所有的帖子并显示它们,但是它会引发以下错误。

代码语言:javascript
复制
error: GRAPHQL_FORMAT_ERROR: Expected Iterable, but did not find one for field Query.allPosts.

请求:

代码语言:javascript
复制
{
  allPosts {
    id
  }
}

响应

代码语言:javascript
复制
{
      "errors": [
        {
          "extensions": {
            "code": "400"
          }
        }
      ],
      "data": {
        "allPosts": null
      }
    }

下面是我的架构Posts.graphql

代码语言:javascript
复制
#Description of Post

type Post {
  userId: Int
  id: Int
  title: String
  body: String
}

query.graphql

代码语言:javascript
复制
type Query {
  dangerousGoods: DangerousGoodsCIO
  allCourses: [Course]
  course(id: Int!): Course
  allPosts: [Post]
}

query.ts

代码语言:javascript
复制
export const Query: QueryResolvers.Resolvers = {
  async allPosts(_, _args, { injector }: ModuleContext) {
    const response = await injector.get(Api).getAllPosts();

    return response.body;
  }
};

api.ts

代码语言:javascript
复制
 getAllPosts() {
    const config = {
      uri: `https://jsonplaceholder.typicode.com/posts`,
      method: 'GET'
    };
    return this.request({ config, log: 'getAllPosts' })
    .then(response => {
      const allPost = response.json();
      return allPost;
    });
  }

注意:如果我像下面这样模拟响应,我可以看到结果。

因此,如果我硬编码post数据,那么它就像预期的那样工作,但当我从API中命中时,它就不能工作了。

请告诉我我在这里做错了什么。

代码语言:javascript
复制
public postsData = [...]

  getAllPosts () {
    return this.postsData;
  }
EN

回答 1

Stack Overflow用户

发布于 2019-01-27 12:36:32

丹尼尔·里尔登提到使用一个提取库是对的。您需要更仔细地看一下docs:https://developer.mozilla.org/en-US/docs/Web/API/Body/json

json()方法将承诺返回给JSON,而不是JSON本身,因此您只需要首先解决它。

此外,由于您在query.ts中使用异步/等待,因此保留使用承诺和重写api.ts的相同方法可能是值得的

代码语言:javascript
复制
async getAllPosts() {
    const config = {
      uri: `https://jsonplaceholder.typicode.com/posts`,
      method: 'GET'
    };
    const response = await this.request({ config, log: 'getAllPosts' })
    const allPost = await response.json();
    return allPost;
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54343877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档