【发布时间】:2021-09-06 03:18:21
【问题描述】:
我目前正在进行一个项目并开发我的 API,我正在使用 ORM Prisma,我刚刚开始使用它。我设法做了一个经典的 CRUD,除了我遇到了一个我不明白的错误,我在更新期间没有使用 TypeORM,我向你解释。
基本上我有一个如下所示的应用程序表:
model candidature {
id Int @id @default(autoincrement())
last_name String? @db.VarChar(255)
first_name String? @db.VarChar(255)
....
candidature_files candidature_files[]
}
我还有一个 Candidature_files 表:
model candidature_files {
id Int @id @default(autoincrement())
file_id Int
is_checked Boolean @default(false)
candidature_id Int
candidature candidature @relation(fields: [candidature_id], references: [id])
candidature_files_list candidature_files_list @relation(fields: [file_id], references: [id])
@@index([file_id], name: "candidature_files_candidature_ibfk_1")
@@index([candidature_id], name: "candidature_files_candidature_ibfk_2")
}
而我的问题是我希望能够同时更新 Candidature_files 的数据和 Candidature 的数据,因此发送这种数据:
"last_name":"Jean-Meulaine",
...
"candidature_files": [
{
"id": 1,
"file_id": 1,
"is_checked": false,
"candidature_id": 1
},
{
"id": 2,
"file_id": 2,
"is_checked": true,
"candidature_id": 1
},
{
"id": 3,
"file_id": 3,
"is_checked": false,
"candidature_id": 1
}
]
但是当我发送这样的表单时,它会返回一个错误:
Invalid `prisma.candidature.update()` invocation:
{
where: {
id: 1
},
data: {
last_name: 'Jean-Meulaine',
...
candidature_files: [
{
id: 1,
file_id: 1,
is_checked: false
},
{
id: 2,
file_id: 2,
is_checked: false
},
{
id: 3,
file_id: 3,
is_checked: false
}
]
~~~~~~~~~~~~~~~~~~~~~
},
include: {
candidature_files: true
}
}
Argument candidature_files: Got invalid value
[
{
id: 1,
file_id: 1,
is_checked: false
},
{
id: 2,
file_id: 2,
is_checked: false
},
{
id: 3,
file_id: 3,
is_checked: false
}
]
这是我的 update 功能,非常基本:
public async update(req: Request, res: Response) {
const candidatureId: number = parseInt(req.params.id);
const candidature = req.body
try {
const updatedCandidature = await prisma.candidature.update({
where:{
id:candidatureId
},
data:
candidature,
include:{
candidature_files:true
}
})
res.json(updatedCandidature)
console.log(updatedCandidature);
} catch (error) {
console.log(error);
return res.status(500).json(error);
}
}
你去吧,我希望你有足够的信息来帮助我解决这个问题,提前谢谢你! :)
【问题讨论】:
标签: node.js typescript relationship updates prisma