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

Kan jeg stadig få adgang til en sitecore-kontaktfacet, når sessionen er tømt?

Efter en masse fejlfinding, fiflen og test fandt jeg endelig ud af det. Mit problem, viste det sig, var ikke skrivningen til mongo, det var i læsningen tilbage fra mongo, når den var blevet skrevet.

Sitecore-dokumentationen ser (som sædvanligt) ud til fuldstændig at gå glip af en ret grundlæggende del af arbejdet med dette. Omkring en tredjedel af langt nede i de dokumenter, der står :

Ok, det er meget misvisende. Hvad denne EnsureAttribute ser ud til at gøre er at indlæse dataene for facetten i den aktuelle klasse fra mongo. Hvis du ikke gør dette for hver ejendom i din facet, så sætter den ikke værdien fra mongoDb! Dette var min fejl, jeg havde ikke "sikret" hver ejendom i klassen.

Så det, der skete, er

  • Jeg lægger mine data ind i facetten
  • facetdataene forbliver i sessionen, og jeg kan se, få adgang til dem, ændre dem osv.
  • Dataene bliver til sidst tømt til mongo (xDb hvis du skal)
  • brugeren vender tilbage, systemet genkender dem korrekt (der er ingen grund til at identificere brugeren , SC_ANALYTICS_GLOBAL_COOKIE gør dette for dig)
  • Men den indlæser ikke dataene (ud af mongo og tilbage i sessionen), medmindre du "sikrer" det.

EnsureAttribute "erklærer ikke en værditype" (dette er bare helt forkert efter min mening) det indlæser dataene fra mongodb og ind i den aktuelle Session .



  1. Mongo aggregeringsmarkør og optælling

  2. $ projektion i mongoDB findOneAndUpdate()

  3. Sådan bruger du GridFS til at gemme billeder ved hjælp af Node.js og Mongoose

  4. Kan ikke oprette forbindelse til MongoDB via node.js i Docker