如何解析 GraphQL 查询中的数组实体?
How to resolve array entities in a GraphQL-Query?
我有一个 graphql 查询,我试图在其中获取 Post 的所有字段。
{
getSpaceByName(spaceName: "Anime") {
spaceId
spaceName
spaceAvatarUrl
spaceDescription
followingIds {
User {
id
name
username
}
}
}
}
在此查询中有一个 followingIds 数组,它是一个字符串数组,其中包含关注此页面的所有用户的 ID。
然后我使用 Field Resolver 来解析所有这些 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 return 它?
尝试像这样更改您的字段解析器:
@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
}
}
}
我有一个 graphql 查询,我试图在其中获取 Post 的所有字段。
{
getSpaceByName(spaceName: "Anime") {
spaceId
spaceName
spaceAvatarUrl
spaceDescription
followingIds {
User {
id
name
username
}
}
}
}
在此查询中有一个 followingIds 数组,它是一个字符串数组,其中包含关注此页面的所有用户的 ID。 然后我使用 Field Resolver 来解析所有这些 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 return 它?
尝试像这样更改您的字段解析器:
@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
}
}
}