typescript 如果存在可选关系,如何筛选?

9bfwbjaz  于 2023-10-22  发布在  TypeScript
关注(0)|答案(2)|浏览(139)

我有以下模式,其中QuizUser上的可选关系。

model User {
  email String @id @unique
  quiz  Quiz?
}

model Quiz {
  id        String @id @default(uuid())
  user      User   @relation(fields: [userEmail], references: [email], onDelete: Cascade)
  userEmail String
}

我想找到所有有测验关系的用户。
起初,我天真地尝试了以下方法:

const users = await p.user.findMany({
  where: { quiz: true },
})

然后我想我找到了一个解决方案in their docs.

const users = await p.user.findMany({
  where: { quiz: { some: {} } },
})

但这给出了错误:
键入“{ some:“{}; }”不能分配给类型“(不包含<Quizeries Filter,QuizWhereInput> & QuizWhereInput)|(不包含<QuizWhereInput,QuizbaseFilter>和QuizbaseFilter)|null|未定义'。
对象文字只能指定已知的属性,并且“some”在类型“中不存在(不使用<QuizonFilter,QuizWhereInput> & QuizWhereInput)|(不包含<QuizWhereInput,QuizbaseFilter> & QuizbaseFilter“)。
9其中:{ quiz:{ some:{},

fzwojiic

fzwojiic1#

您在文档中找到的解决方案适用于一对多关系。一对一关系可以这样过滤:

const users = await p.user.findMany({
  where: { quiz: { isNot: null } },
});
8i9zcol2

8i9zcol22#

对于那些在涉及一对一关系的情况下寻求解决方案的人,目标是通过null字段过滤记录,您可以使用以下Prisma查询:

const users = await p.user.findMany({
  where: { quiz: { is: null } },
});

这个查询可以有效地检索“user”模型中“quiz”字段为null的记录,使其成为在此类场景中过滤数据的有用工具。

相关问题