【问题标题】:How to resolve array entities in a GraphQL-Query?如何在 GraphQL-Query 中解析数组实体?
【发布时间】:2021-08-04 11:05:55
【问题描述】:

我有一个 graphql 查询,我试图在其中获取 Post 的所有字段。

{
    getSpaceByName(spaceName: "Anime") {
        spaceId
        spaceName
        spaceAvatarUrl
        spaceDescription
        followingIds {
            User {
                id
                name
                username
            }
        }
    }
}

在此查询中,有一个 followingIds 数组,它是一个字符串数组,其中包含关注此页面的所有用户的 Id。 然后我使用字段解析器来解析所有这些 id 并返回一组用户

  @FieldResolver(() => User)
  async followingIds(@Root() space: Spaces) {
    const spaceAcc = (await Spaces.findOne({
      where: {
        spaceName: space.spaceName,
      },
    })) as Spaces;
   const users  = []
   await users.push(await User.findByIds(spaceAcc.followingIds as string[]) as User[])
   console.log(users)
   return users
  }

这是我从我的服务器得到的

这是我在 GraphQL 查询中调用它时遇到的错误。

如何解决这个用户实例,我正在进入所有用户字段并使用我的 Graphql-Query 返回它?

【问题讨论】:

    标签: typescript api graphql typeorm typegraphql


    【解决方案1】:

    尝试像这样更改您的字段解析器:

    @FieldResolver(() => [User])
    async followingIds(@Root() space: Spaces) {
      const spaceAcc = (await Spaces.findOne({
        where: {
          spaceName: space.spaceName,
        },
      })) as Spaces;
      const users  = await User.findByIds(spaceAcc.followingIds as string[]) as User[];
      console.log(users);
      return users;
    }
    

    然后像下面这样更改您的查询:

    {
        getSpaceByName(spaceName: "Anime") {
            spaceId
            spaceName
            spaceAvatarUrl
            spaceDescription
            followingIds {
                id
                name
                username
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-05-31
      • 2019-12-12
      • 2019-09-28
      • 2017-11-27
      • 2020-05-22
      • 1970-01-01
      • 2020-08-19
      • 1970-01-01
      • 2017-10-03
      相关资源
      最近更新 更多