我正在我的应用程序中构建聊天功能并使用 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 列表相匹配。
尝试这个方法
const conversations = await prisma.conversation.findMany({
where: {
players: {
every: { id: { in: listOfIds } }
},
},
select: {
// Include necessary fields here
},
});