簡體   English   中英

Objection.js 條件插入圖

[英]Objection.js conditional insertGraph

我正在為我們的軟件創建導入 function,其中 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
                  }

我還嘗試使用插入和 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); });
            }
        })

有人可以幫助我嗎? 非常感謝!

你的朋友會是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']
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM