繁体   English   中英

Prisma:如何根据非唯一列查询记录

[英]Prisma : How to query the record based on non unique columns

Prima 提供了使用 API 查询数据库中记录的快速方法,这些功能对于唯一列非常有效。 就像我有一个表成员如下

type Membership {
      id: ID! @id
      memberKey: String! @unique
      member: User! @relation(name: "MemberUser")
      project: Project! @relation(name: "MemberProject")
      access: [Access] @scalarList(strategy: RELATION)
      createdBy: User @relation(name: "MembershipCreator")
      updatedBy: User @relation(name: "MembershipUpdator")
      createdAt: DateTime! @createdAt
      updatedAt: DateTime! @updatedAt
}

type Project {
      id: ID! @id
      initials: String! @unique
      name: String! @unique
      desc: String
      conf: Json
      products: [Product!] @relation(name: "ProjectProducts")  
      tags: [Tag!] @relation(name: "ProjectTags")
      isActive: Boolean @default(value: true)
      createdBy: User @relation(name: "ProjectCreator")
      updatedBy: User @relation(name: "ProjectUpdator")
      createdAt: DateTime! @createdAt
      updatedAt: DateTime! @updatedAt
}

现在如果需要根据id查询上表,我可以简单地做

 project = await prisma.query.membership({
                where: {
                    project: {
                        id: projectId
                    }
                }
            }, `{ id  }`)

但是,如果我必须基于任何非唯一字段(如 Project.id)进行查询,我将无法这样做,因为默认情况下 Prisma 只会为唯一字段创建函数,在我的情况下,我可以查询 id 和 memberkey。 我看到的错误是

错误:变量“$_v0_where”得到无效值{成员:{id:“ck57qob5z00f90791d1973nbh”}}; 字段“成员”不是由类型 MembershipWhereUniqueInput 定义的。 你是说 memberKey 吗?

请帮忙

您可以添加member: Member! @relation(name: "MemberProject") member: Member! @relation(name: "MemberProject")member: [Member!]! @relation(name: "MemberProject") member: [Member!]! @relation(name: "MemberProject")到数据模型中的项目类型以获取某个项目的所有成员资格。

使用棱镜客户端 fluent api(不是棱镜绑定)它可能如下所示:

const commentsForPost = await prisma
  .post({ id: 'cjsviilj60g8y0b43bme3x8ib' })
  .comments()

看:

您只能在unique字段上使用prisma.query.membership 要查询任何字段,您需要使用带有s prisma.query.memberships 不过,这将返回一个列表,例如:

const [membership] = prisma.query.memberships(...);

将第一个返回的项目放入可变membership

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM