我正在为我们的软件创建一个导入函数,其中Excel文件可以用来将数据导入到系统中。我们使用objection.js (创建工具),我使用insertGraph()插入内容。我的问题是,我只想导入关系时,有数据提供。怎样才能使insertGraph成为条件呢?
.insertGraph(
[
{
'#id': 'boat',
...arrayList[i],
insertedBy: req.user.sub,
berthAssignments: [
{
insertedBy: req.user.sub,
from: relationsData[i].ownershipSince,
boat: [
{
id: '#ref{boat.id}'
}
],
berth: [
{
id: berthId[0]?.id
}
]
}
],
electricMeterAssignments: [
{
insertedBy: req.user.sub,
from: relationsData[i].electricMeterSince,
electricMeter: [
{
id: meterId[0]?.id
}
],
boat: [
{
id: '#ref{boat.id}'
}
]
}
],
winterStorageAssignments: [
{
insertedBy: req.user.sub,
from: relationsData[i].winterStorageSince,
winterStorage: [
{
id: storageId[0]?.id
}
],
boat: [
{
id: '#ref{boat.id}'
}
]
}
]
}
],
{
relate: true,
allowRefs: true
}我还尝试了使用insert和if条件的传统方法,但这也不能正常工作:
.insert(arrayList[i])
.then(async insertedBoat => {
if (relationsData[i].berthHandle) {
console.log('berthHandle')
await BerthAssignment
.query(req.dbConnection)
.insert({
bcm_berths_id: berthId[0].id,
bcm_boats_id: insertedBoat.id,
from: relationsData[i].berthSince,
insertedBy: req.user.sub,
})
.catch((error) => { console.log(error); throw next(error); });
} else if (relationsData[i].electricMeters) {
console.log('electricMeter')
await ElectricMeterBoat
.query(req.dbConnection)
.insert({
bcm_electric_meters_id: meterId[0].id,
bcm_boats_id: insertedBoat.id,
from: relationsData[i].electricMeterSince,
insertedBy: req.user.sub,
})
.catch((error) => { console.log(error); throw next(error); });
} else if (relationsData[i].winterStoragehandle) {
console.log('Hallo')
await WinterStorageAssignment
.query(req.dbConnection)
.insert({
bcm_winter_storages_id: storageId[0].id,
bcm_boats_id: insertedBoat.id,
from: relationsData[i].winterStorageSince,
insertedBy: req.user.sub,
})
.catch((error) => { console.log(error); throw next(error); });
} else if (owner !== null) {
console.log('asdflksdafsdaf')
await BoatOwner
.query(req.dbConnection)
.delete()
.where({
bcm_boats_id: insertedBoat.id
})
.catch(() => null);
await BoatOwner
.query(req.dbConnection)
.insert({
bcm_boats_id: insertedBoat.id,
bcm_persons_id: personId[0]?.id,
// bcm_companies_id: companyId[0]?.id,
isOwnerSince: relationsData[i]?.ownershipSince,
insertedBy: req.user.sub
})
.catch((error) => { console.log(error); throw next(error); });
}
})有人能帮我吗?非常感谢!
发布于 2022-09-05 18:57:54
你的朋友会是upsertGraph
我用它一次用于一个需要一些深嵌套插入/更新的应用程序,它和.upsertGraph(data, {insertMissing: true})一样简单
但是,您可以从文档中更具体地了解在使用它时发生了什么关系。
const options = {
// Only enable `unrelate` functionality for these two paths.
unrelate: ['pets', 'movies.reviews'],
// Only enable `relate` functionality for 'movies' relation.
relate: ['movies'],
// Disable deleting for movies.
noDelete: ['movies']
};https://stackoverflow.com/questions/73583992
复制相似问题