亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Firebase中的多到多關系

Firebase中的多到多關系

人到中年有點甜 2019-06-28 14:51:00
Firebase中的多到多關系我有一個Firebase數據庫。我有公司和承包商。一個承包商可以為一個以上的公司工作,一個公司可以有多個承包商。這是一個直截了當的多到多的關系。我希望能夠回答有關公司和承包商的問題:給一個公司,誰是現在的承包商。給一個承包商他們為什么公司工作。在火力范圍內構造數據的替代方案是什么?
查看完整描述

2 回答

?
HUH函數

TA貢獻1836條經驗 獲得超4個贊

經過進一步的研究,我將嘗試回答我自己的問題。我已經審查了許多其他帖子,解決這個問題的一個解決方案是在一個公司對象中存儲ContractorKeys列表,并在每個承包商對象中存儲一個CompanyKeys列表。下面的例子說明了這一點。

companies : {
  companyKey1 : {
    name : company1
    ...
    contractors : {
      contractorKey1 : true,   
      contractorKey3 : true
    }
  }
  companyKey2 : {
    name : company2
    ...
    contractors : {
      contractorKey2 : true,  
    } 
  }
}
contrators : {
  contractorKey1 : {
     name : bill
     ...
     companies : {
        companyKey1 : true
     }
   }
  contractorKey2 : {
     name : steve
     ...
     companies : {
        companyKey1 : true
     }

   }
  contractorKey3 : {
     name : jim
     ...
     companies : {
        companyKey2 : true
     }
   }
}

這個組織的“工作”意義上說,上述問題是可以回答的。但是這種解決方案的一個缺點是,當承包商/公司的任務發生變化時,有兩個列表需要維護。如果有一種方法在一個列表中表示這些信息,那就更好了。

我想出了一個更好的解決辦法。解決方案是創建第三份清單,此外還有公司和承包商,稱為ComanyAndContractorAsmission。這份清單的內容將代表單一承包商和業主之間的關系。它的內容將是一對字段,ContractorKey和companyKey。然后,我們可以取消公司內部的承包商名單和承包商內部的公司名單。這種替代結構如下所示。注意,在公司對象中沒有承包商列表,也沒有帶有承包商對象的公司列表。

companies : {
  companyKey1 : {
    name : company1
    ...
  }
  companyKey2 : {
    name : company2
    ...
  }
}
contrators : {
  contractorKey1 : {
     name : bill
     ...
  }
  contractorKey2 : {
     name : steve
     ...
  }
  contractorKey3 : {
     name : jim
     ...
  }
}
companyAndContractorsAssignment : {
  key1 : {
    contractorKey1 : true,
    companyKey1: true,
  }
  key2 : {
    contractorKey3 : true,
    companyKey1: true,
  }
  key3 : {
    contractorKey2 : true,
    companyKey2: true,
  }

這種替代結構允許一個人使用orderBychild/equalto來回答問題-對公司進行查詢-AndContractorsAs寫意-查找承包商的所有公司或公司的所有承包商?,F在只有一份清單需要維護。我認為這是我的需求的最佳解決方案。


查看完整回答
反對 回復 2019-06-28
  • 2 回答
  • 0 關注
  • 430 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號