sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Todavía puedo acceder a una faceta de contacto de Sitecore una vez que se vacía la sesión?

Después de una gran cantidad de depuración, manipulación y pruebas, finalmente descubrí esto. Resultó que mi problema no era la escritura en mongo, sino la lectura de mongo una vez que se había escrito.

La documentación del sitecore parece (como de costumbre) perder por completo una parte bastante fundamental del funcionamiento de esto. Alrededor de un tercio de los muy abajo de los documentos que indica :

Ok, esto es muy engañoso. Qué es este EnsureAttribute parece hacer es cargar los datos de la faceta en la clase actual de mongo. Si no hace esto para todas las propiedades en su faceta, ¡entonces no establece el valor de mongoDb! Este fue mi error, no había "asegurado" todas las propiedades de la clase.

Así que lo que estaba pasando es,

  • Pongo mis datos en la faceta
  • los datos de las facetas persisten en la sesión y puedo verlos, acceder a ellos, cambiarlos, etc.
  • Los datos finalmente se descargan en mongo (xDb si es necesario)
  • el usuario vuelve, el sistema lo reconoce correctamente (no es necesario identificar al usuario , el SC_ANALYTICS_GLOBAL_COOKIE hace esto por ti)
  • Pero no carga los datos (fuera de mongo y de vuelta a la sesión) a menos que lo "garantice".

Entonces el EnsureAttribute no "declara un tipo de valor" (esto es totalmente incorrecto en mi opinión) carga los datos fuera de mongodb y en la Session actual .