1

我有一个User包含用户数据的表。我还有一个Relationship包含 aparent_id和 achild_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;
  },
});

架构.棱镜:

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")
}
4

1 回答 1

1

下面的查询应该这样做

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

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

于 2020-05-26T10:19:27.963 回答