sql >> Databasteknik >  >> NoSQL >> MongoDB

Kan jag fortfarande komma åt en sitecore-kontaktaspekt när sessionen har tömts?

Efter en hel del felsökning, fifflande och testande kom jag äntligen på det här. Mitt problem, visade det sig, var inte skrivningen till mongo, det var i läsningen tillbaka ur mongo när den väl hade skrivits.

Sitecore-dokumentationen verkar (som vanligt) helt missa en ganska grundläggande del av arbetet med detta. Ungefär en tredjedel av längst ner i dokumenten som det står :

Ok, det här är väldigt missvisande. Vad detta EnsureAttribute verkar göra är att ladda data för aspekten i den aktuella klassen från mongo. Om du inte gör detta för alla fastigheter i din fasett så ställer den inte in värdet från mongoDb! Detta var mitt misstag, jag hade inte "försäkrat" alla fastigheter i klassen.

Så vad som hände är

  • Jag lägger in min data i facetten
  • aspektdata finns kvar i sessionen och jag kan se, komma åt den ändra den osv.
  • Datan spolas så småningom till mongo (xDb om du måste)
  • användaren returnerar, systemet känner igen dem korrekt (det finns inget behov av att identifiera användaren , SC_ANALYTICS_GLOBAL_COOKIE gör detta åt dig)
  • Men den laddar inte in data (från mongo och tillbaka till sessionen) om du inte "försäkrar" det.

EnsureAttribute "deklarerar inte en värdetyp" (detta är bara helt fel enligt min mening) den laddar data från mongodb och in i den aktuella Session .



  1. Mongodb kraschade med Ogiltig åtkomst på adress - segmenteringsfelsignal 11 - version 2.6

  2. Det effektivaste sättet att få allt värde för ett fält i MongoDB &Node.js

  3. Mongo db-array ändrar strängen till att flyta

  4. Reg:mongo db fel utdata enligt fråga