[英]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.