如果父字段满足条件,则查询 prisma 关系返回子字段

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

我有两个模型:

Post
模型和
PostItem
模型。一个
Post
可以有多个
PostItems
.

model Post {
  id                  Int      @id @default(autoincrement())
  title               String   @db.VarChar(300)
  postItemNoteStatus  String   @db.Text

  postItems           PostItem[]    
}

model PostItem {
   id      Int     @id @default(autoincrement())
   postId  Int
   url     String? @db.VarChar(1000)
   note    String? @db.VarChar(300)
   
   post Post @relation(fields: [postId], references: [id])
}

我想找到一个

Post
并返回它的所有
PostItems
,但如果
note
PostItem
,则只在
postItemNoteStatus
中包含
visible
字段。我想在一个查询中执行此操作。目前,这就是我所拥有的:

db.post.findFirst({
  where: { id},
  include: { postItems: true }
})

if(post.postItemNoteStatus === 'hidden') {
 post.postItems.forEach((pi) => {
    delete pi.note;
 });
}

这行得通,但如果

postItemNoteStatus
hidden
,我必须手动删除笔记。我希望能够在查询中优雅地做到这一点。考虑到我的模型和关系,这可能吗?

prisma gql prisma-graphql prisma2
© www.soinside.com 2019 - 2024. All rights reserved.