Получить данные из вторичной таблицы в Prisma2 - PullRequest
0 голосов
/ 26 мая 2020

У меня есть таблица User, содержащая пользовательские данные. У меня также есть таблица Relationship, содержащая parent_id и child_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")
}

1 Ответ

0 голосов
/ 26 мая 2020

Запрос ниже должен сделать это

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

Вам нужно явно указать параметр include, чтобы включить связь в вывод.

...