首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Objection.js条件insertGraph

Objection.js条件insertGraph
EN

Stack Overflow用户
提问于 2022-09-02 14:20:47
回答 1查看 98关注 0票数 0

我正在为我们的软件创建一个导入函数,其中Excel文件可以用来将数据导入到系统中。我们使用objection.js (创建工具),我使用insertGraph()插入内容。我的问题是,我只想导入关系时,有数据提供。怎样才能使insertGraph成为条件呢?

代码语言:javascript
复制
.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条件的传统方法,但这也不能正常工作:

代码语言:javascript
复制
  .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); });
            }
        })

有人能帮我吗?非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2022-09-05 18:57:54

你的朋友会是upsertGraph

我用它一次用于一个需要一些深嵌套插入/更新的应用程序,它和.upsertGraph(data, {insertMissing: true})一样简单

但是,您可以从文档中更具体地了解在使用它时发生了什么关系。

代码语言:javascript
复制
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']
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73583992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档