Dans ma base de données, j'ai différentes collections qui peuvent être attachées avec leurs ID's
afin que je puisse afficher quelques event(s)
. Mais il y a une collection que je ne peux pas sembler faire correspondre avec les autres collections.Faire correspondre les collections avec leurs ID de la base de données
Une collection est appelée événements et chaque événement contient un attribut de unit
:
Et j'ai aussi une collection avec locks
(unités) qui contient le même ObjectId
:
Donc, mon objectif ici est de pouvoir faire correspondre un lock
(unité) avec le (s) événement (s) correct (s). Dans mon application React and Redux, j'ai un itinéraire où je veux afficher le (s) bon (s) événement (s) correct (s) lock
(unité). J'ai dans mon routeur ceci:
<AuthRoute path="/log/:lockId" component={LockDetails} />
Et puis dans mon parent qui est censé afficher la liste que j'ai ceci:
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
})
Et puis en passant vers le bas:
<LockLog lock={lock}/>
Mais voici où cela devient difficile. Je me demande comment je devrais écrire le code pour obtenir le (s) bon (s) événement (s) correct (s) lock
(unité).
Lors de l'obtention du lock
du parent j'utilise également keyBy
de la bibliothèque lodash
.
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>
)
})
Cela va bien avec les données correspondant de mes autres paramètres à mon lock
(unité), mais pas avec l'événement (s). Je voudrais donc un peu d'aide, car la seule chose qui se présente est émis:
donc pas lock
(unité) après « öppnade på ».