可选的外键 null"/>
Prisma 没有设置一个可选的外键 null
我正在尝试将 prisma 中的一个可选外键更新为 null,但它给了我一个错误,即值 null 不是预期的,但“未定义”可以作为值完成。如果尝试从 MySQL 设置为 null 它有效。
车辆 Prisma 架构
model Vehicle {
id String @id @default(uuid())
vehicle_model_category_id String?
Vehicle_Model_Category Vehicle_Model_Category? @relation(fields: [vehicle_model_category_id], references: [id], onUpdate: Cascade, onDelete: Cascade)
}
这里一个车型可能没有类别模型,通常可以为空,因为在模式中也是可选的。 Vehicle_Model_Category(1) -> Vehicle_Model(Many)之间的关系
let vehicle_model_category_id;
const vehicleModelCategory = await prisma.vehicle_Model.findUnique({
where: {
id: vehicle_model_id,
},
select: {
Vehicle_Model_Category: {
select: {
id: true,
},
},
},
});
if (vehicleModelCategory.Vehicle_Model_Category) {
vehicle_model_category_id =
vehicleModelCategory.Vehicle_Model_Category.id;
}
let vehicle_model_category_connect;
if (vehicle_model_category_id) {
console.log("EXISTS");
vehicle_model_category_connect = {
connect: {
id: vehicle_model_category_id,
},
};
} else {
vehicle_model_category_connect = null;
}
console.log(vehicle_model_category_connect + " VARIABLE CONNECT"); // null
const vehicle = await prisma.vehicle.create({
data: {
Vehicle_Model_Category: vehicle_model_category_connect }
})
我得到的错误是:
data.Vehicle_Model_Category 的参数 Vehicle_Model_Category 不能为空。请改用 undefined
我尝试在 MySQL 上手动执行此操作以在 Mysql 上更新,它可以工作但是从 prisma 不工作。
回答如下:Prisma 区分 null 和 undefined。
null
是一个值,而 undefined
表示什么都不做。请参阅文档的此section。将字段值设置为 undefined
等同于根本不在更新查询中包含该字段。从错误消息来看,prisma 希望您将其设置为 undefined
而不是 null。
例如,假设我们有这样的模式,其中一个用户有很多帖子,但一个帖子可能有也可能没有与之关联的用户。注意可选关系
author
和关系标量 authorId
model User {
id Int @id @default(autoincrement())
posts Post[]
}
model Post {
id Int @id @default(autoincrement())
author User? @relation(fields: [authorId], references: [id])
authorId Int?
}
如果我们编写一个脚本来创建一个新帖子并将可选关系
author
设置为null,如下所示
const post = await prisma.post.create({
data: {
author: null
}
})
我们会收到一条错误消息
Argument author for data.author must not be null. Please use undefined instead.
,这与您收到的错误消息类似。
我将更新脚本以将
author
关系字段设置为 undefined
const post = await prisma.post.create({
data: {
author: undefined
}
})
我们会得到这个输出
{ id: 2, authorId: null }
更多推荐
Prisma 没有设置一个可选的外键 null
发布评论