谁能告诉我如何使这个独特的约束不区分大小写?我看起来像
@@unique([name, size, color], options:{caseInsensitive: true})
我使用的是 prisma 客户端版本:5.4.1
model SomeModel {
id Int @id @default(autoincrement())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
name String
size String
color String
@@unique([name, size, color])
}
或者有什么方法可以在 prisma 更新查询期间检查不区分大小写,如下所示?
await prisma.update.SomeModel({
where: {
name_size_color: {
name: data.name? {equals: data.name, mode: "insensitive"},
size: data.size? {equals: data.size, mode: "insensitive"},
color: data.color? {equals: data.color, mode: "insensitive"}
}
},
data: someData
});
当我尝试 prisma 更新时,每个字段都发生以下错误: 参数
color
:提供的值无效。预期为字符串,提供了对象。
注意:在我的例子中,名称、大小或颜色的值可以为 null 或空字符串或字符串。
自版本 5.4.1 起,Prisma 不支持直接在模式中定义不区分大小写的唯一约束,不过,您可以通过使用 contains 过滤器以及自定义 SQL 函数来执行操作来处理应用程序中不区分大小写的情况。
const result = await prisma.someModel.update({
where: {
name_size_color: {
name: { contains: { value: data.name, mode: 'insensitive' } },
size: { contains: { value: data.size, mode: 'insensitive' } },
color: { contains: { value: data.color, mode: 'insensitive' } },
},
},
data: someData,
});
}
这可能不如数据库中真正的不区分大小写的唯一约束那么有效,但它提供了一种解决方法,直到 Prisma 引入对不区分大小写的约束的内置支持。