说,我有一个来自前端的数据结构如下:
const userData = [
{
id: 11223,
bb: [
{
id: 12,
},
{
id: 34,
bbb: "bbb",
},
],
},
{
id:4234,
...
},
];
因为,没有/一些/所有的数据可能已经在数据库中,这就是我想出的:
const collection = [];
for (let i = 0; i < userData.length; i++) {
const cur = userData[i];
const subCur = cur.bb;
const updatedCur = await db.cur.upsert({
where: {
id : cur.id
},
update: {
...
},
create: {
...
},
})
);
collection.push(updatedCur);
for (let j = 0; j < subCur.length; j++) {
const latest = subCur[j];
await db.subcur.upsert({
where: {
id : latest.id
},
update: {
...
},
create: {
...
},
});
}
}
总而言之,我正在逐个映射 userData 和upsert
每个对象。在循环中,我将子集合和upsert
它们映射到数据库中。
我担心的是我以这种方式在数据库中输入了很多条目。这是最好的方法吗?
旁白:我之前曾尝试inserts
在. 这个对吗?upsert
update
update
upsert
更新:
按照 Ryan 的要求,Schema 如下所示:
model Cur {
id Int,
subCur SubCur[]
...
}
model SubCur {
id Int,
cur Cur @relation(fields: [curId], references : [id])
curId Int
...
}
总而言之,有许多模型,如“SubCur”,与“Cur”模型具有 1-n 关系。作为“用户数据”有效负载,可能有一些新数据,一些是数据库中已有数据的更新,我很好奇,upsert
将数据放入数据库的最佳方法是什么。具体来说,我是否必须一次插入一个?