Prisma 查找关系字段与 Id 的精确列表匹配的记录

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

我正在我的应用程序中构建聊天功能并使用 Prisma ORM。我有一个“对话”模型,如下所示:

model Conversation {
    id           String     @id              @default(uuid())
    players      Player[]
    messages     Message[]
    createdAt    DateTime   @default(now())
    updatedAt    DateTime   @updatedAt
    @@map("conversations")
}

一个对话可以与很多玩家相关。使用playerIds列表,我想找到一个恰好包含这个playerIds列表的对话。

如果找到,我将重用此对话并防止创建包含完全相同玩家的重复对话。

我尝试使用此查询通过 ID 列表过滤玩家,但这会返回所有对话,其中任何对话都包含这些 ID。

const conversations = await prisma.conversation.findMany({
    select: {
      players: {
        where: {
          id: { in: listOfIds }
        },
      }
    }
})

我需要的是准确找到 1 条记录,其中与此合作相关的玩家列表与玩家 ID 列表相匹配。

node.js next.js prisma
1个回答
0
投票

尝试这个方法

const conversations = await prisma.conversation.findMany({
  where: {
    players: {
      every: { id: { in: listOfIds } }
    },
  },
  select: {
    // Include necessary fields here
  },
});
© www.soinside.com 2019 - 2024. All rights reserved.