首页 > 解决方案 > 如何从显式多对多表中返回数据?

问题描述

我有一个创建通知并将该通知连接到用户的突变:

    const notification = await prisma.notification.create({
      data: {
        actor_id: args.actor_id,
        movie_id: args.movie_id,
        message: args.message,
        users: {
          create: [
            {
              watched: false,
              user: {
                connect: {
                  id: args.userId,
                },
              },
            },
          ],
        },
      },
    });

架构:

model Notification {
  id                Int     @id @default(autoincrement())
  actor_id          Int
  link              String?
  movie_id          Int?
  message           String
  icon              String?
  thumbnail         String?
  users             NotificationsOnUsers[]
}

model User {
  id                Int     @id @default(autoincrement())
  email             String  @unique
  name              String
  user_name         String  @unique
  password          String
  movies            Movie[]
  notifications     NotificationsOnUsers[]
  followedBy        User[] @relation("UserFollows", references: [id])
  following         User[] @relation("UserFollows", references: [id])
}

model NotificationsOnUsers {
  user              User          @relation(fields: [userId], references: [id])
  userId            Int
  notification      Notification  @relation(fields: [notificationId], references: [id])
  notificationId    Int
  watched           Boolean

  @@id([userId, notificationId])
}

我正在尝试返回连接到当前用户的通知:

    const notifications = await prisma.user.findMany({
      where: {id: 1},
      select: {
        notifications: true,
      },
    });

    console.log(...notifications);
    return notifications;

这将返回对多对多表的引用:

{通知:[{用户ID:1,通知ID:7,观看:假}]}

我一直在阅读文档> https://www.prisma.io/docs/concepts/components/prisma-schema/relations/many-to-many-relations#explicit-many-to-many-relations但我可以似乎没有得到正确的查询。

标签: apolloapollo-server

解决方案


推荐阅读