MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Мога ли все още да имам достъп до фасет за контакт на ядрото на сайта, след като сесията бъде изчистена?

След много отстраняване на грешки, бъркане и тестване най-накрая разбрах това. Оказа се, че проблемът ми не е писането в mongo, а в обратното четене от mongo, след като е било написано.

Документацията на ядрото на сайта изглежда (както обикновено) напълно пропуска доста фундаментална част от работата на това. Около една трета от надолу по документите, които посочва :

Добре, това е много подвеждащо. Какво представлява този EnsureAttribute изглежда трябва да заредите данните за фасета в текущия клас от mongo. Ако не направите това за всеки имот във вашия аспект, тогава той не задава стойността от mongoDb! Това беше моя грешка, не бях „осигурил“ всяко свойство в класа.

Така че това, което се случваше е,

  • Поставям данните си във фасета
  • данните за фасетите продължават да съществуват в сесията и мога да ги видя, да получа достъп до тях, да ги променя и т.н.
  • Данните в крайна сметка се изчистват в mongo (xDb, ако трябва)
  • потребителят се връща, системата го разпознава правилно (няма нужда да идентифицирате потребителя , SC_ANALYTICS_GLOBAL_COOKIE прави това вместо вас)
  • Но не зарежда данните (от mongo и обратно в сесията), освен ако не ги „осигурите“.

Така че EnsureAttribute не "декларира тип стойност" (това е напълно погрешно според мен) зарежда данните от mongodb и в текущата Session .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongodb:съхраняване на йерархична дървовидна структура?

  2. Как да върнете само стойност на поле в mongodb

  3. Mongo db агрегиране на множество условия

  4. Проста реализация на маркиране с MongoDB

  5. Mongoose:Сравненията на ObjectId се провалят непоследователно