MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Ainda posso acessar uma faceta de contato do sitecore depois que a sessão for liberada?


Depois de muito depurar, mexer e testar, finalmente descobri isso. Meu problema, ao que parece, não era escrever para o mongo, estava na leitura de volta do mongo depois de escrito.

A documentação do sitecore parece (como sempre) perder completamente uma parte fundamental do funcionamento disso. Cerca de um terço dos nos documentos que indica :

Ok, isso é muito enganoso. O que este EnsureAttribute parece fazer é carregar os dados da faceta na classe atual do mongo. Se você não fizer isso para todas as propriedades na sua faceta, ele não define o valor do mongoDb! Este foi o meu erro, eu não tinha "garantido" todas as propriedades da classe.

Então o que estava acontecendo é,
  • Coloquei meus dados no atributo
  • os dados da faceta persistem na Sessão e posso ver, acessá-los, alterá-los etc.
  • Os dados são eventualmente liberados para o mongo (xDb, se necessário)
  • o usuário retorna, o sistema os reconhece corretamente (não há necessidade de identificar o usuário , o SC_ANALYTICS_GLOBAL_COOKIE faz isso por você)
  • Mas ele não carrega os dados (fora do mongo e volta para a sessão), a menos que você "garanta" isso.

Portanto, o EnsureAttribute não "declara um tipo de valor" (isso é totalmente errado na minha opinião) ele carrega os dados do mongodb para a Session atual .