2017-10-17 55 views
0

在我的數據庫我有不同的藏品,可以綁在他們的ID's,所以我可以顯示一些event(s)。但有一個集合,我似乎無法與其他集合匹配。匹配館藏與他們的ID從數據庫

一個集合稱爲事件和每個事件包含的unit一個屬性:包含相同ObjectId

enter image description here

而且我也有locks(單位)的集合:

enter image description here 所以我的目標是能夠將lock(單位)與正確的事件進行匹配。在我的React和Redux應用程序中,我有一個路線,我想將正確的事件顯示到正確的lock(單位)。在我的路由器我有這樣的:

<AuthRoute path="/log/:lockId" component={LockDetails} /> 

然後在我的父母是應該顯示列表我有這樣的:

class LockDetails extends Component { 
    render() { 
    const lockId = this.props.match.params.lockId // Getting the ID from endpoint 
    const locks = this.props.locks || [] // All locks(units) from Redux store 
    const lock = locks.find(lock => { // Getting the correct lock form my params 
     return lock._id === lockId 
    }) 

然後向下傳遞:

<LockLog lock={lock}/> 

但在這裏它變得棘手。我想知道如何編寫代碼來獲得正確的事件到正確的lock(單位)。

當從父級獲得lock時,我還使用lodash庫中的keyBy

const keyedLocks = keyBy(lock, '_id') 

const mappedEvents = 
    events.reverse().map((event, i) => { 
    var driver = event.driver ? keyedDrivers[event.driver] : false 
    var carrier = driver ? keyedCarriers[driver.carrier] : false 
    var customer = event.customer ? keyedCustomers[event.customer] : false 
    var lock = event.unit ? keyedLocks[event.unit] : false // Tried something here, but it didn't go so well.... 

    return (
     <div> 
     <EventItem 
      key={i} 
      event={event} 
      customer={customer} 
      carrier={carrier} 
      driver={driver} 
      lock={keyedLocks[event.unit] || { address: {} }} 
     /> 
     </div> 
    ) 
    }) 

這與我的其他端點數據的匹配我的lock(單位)進展順利,但不能與事件(一個或多個)。後「öppnade啪」

enter image description here

所以沒有lock(單位):所以我想一些幫助,因爲這被輸出的唯一事情是這樣的。

回答

1

您應該將鎖包裝到數組或對象中,例如:const keyedLocks = keyBy([lock], '_id')

相關問題