MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Posso ancora accedere a un facet di contatto sitecore una volta che la sessione è stata scaricata?

Dopo un sacco di debugging, giocherellare e testare, finalmente l'ho capito. Il mio problema, si è scoperto, non era la scrittura su mongo, ma la lettura di mongo una volta che era stato scritto.

La documentazione del sitecore sembra (come al solito) perdere completamente una parte piuttosto fondamentale del funzionamento di questo. Circa un terzo dei in fondo ai documenti che afferma :

Ok, questo è molto fuorviante. Cosa questo EnsureAttribute sembra caricare i dati per il facet nella classe corrente da mongo. Se non lo fai per ogni proprietà nella tua sfaccettatura quindi non imposta il valore da mongoDb! Questo è stato un mio errore, non avevo "assicurato" tutte le proprietà della classe.

Quindi quello che stava succedendo è,

  • Ho inserito i miei dati nel facet
  • i dati dei facet persistono nella Session e posso vederli, accedervi, modificarli, ecc.
  • I dati vengono infine scaricati su mongo (xDb se necessario)
  • l'utente ritorna, il sistema lo riconosce correttamente (non è necessario identificare l'utente , il SC_ANALYTICS_GLOBAL_COOKIE lo fa per te)
  • Ma non carica i dati (da mongo e torna nella sessione) a meno che non li "assicuri".

Quindi EnsureAttribute non "dichiara un tipo di valore" (questo è completamente sbagliato secondo me) carica i dati da mongodb e nella Session corrente .