从Prisma2中的辅助表中获取数据

问题描述 投票:0回答:1

我有一个包含用户数据的User表。我还有一个Relationship表,其中包含parent_idchild_id以及递增的id。每个父级可以有多个子级,我正在尝试使用parent_id检索子级数组。我目前正在获取一个数组,但是该数组仅包含Relationship表数据。

如何从User表中获取数据?我的印象是,由于存在某种关系,因此以下内容应该起作用,但事实并非如此。

query {
  getChildren {
    user{
      id
      name
      email      
    }
  }
}

相关代码如下:查询:

export const getChildren = queryField('getChildren', {
  type: 'User',
  list: true,
  resolve: async (_parent, {}, ctx) => {
    const userId = getUserId(ctx);
    if (!userId) {
      // TODO -think I might need to throw an error here
      return;
    }
    const children = await ctx.prisma.relationship.findMany({
      where: {
        parent_id: userId,
      },
    });
    return children;
  },
});

schema.prisma:

model Relationship {
  child_id            Int
  id                  Int  @default(autoincrement()) @id
  parent_id           Int
  child               User @relation("Relationship_child_idToUser", fields: [child_id], references: [id])
  parent              User @relation("Relationship_parent_idToUser", fields: [parent_id], references: [id])
}

model User {
  created_at          DateTime       @default(now())
  email               String?        @unique
  id                  Int            @default(autoincrement()) @id
  ischild             Boolean        @default(false)
  name                String?
  password            String
  children            Relationship[] @relation("Relationship_child_idToUser")
  parents             Relationship[] @relation("Relationship_parent_idToUser")
}
graphql nexus prisma nexus-prisma
1个回答
0
投票

下面的查询应该这样做

  prisma.relationship.findMany({
    where: {
      parent_id: user_id,
    },
    include: {
      child: true,
    },
  })

您需要明确指定include参数以在输出中包括该关系。

© www.soinside.com 2019 - 2024. All rights reserved.