Sau rất nhiều lần gỡ lỗi, tìm kiếm và thử nghiệm, cuối cùng tôi đã tìm ra điều này. Vấn đề của tôi, hóa ra, không phải là viết cho mongo mà là đọc ngược mongo một khi nó đã được viết.
Tài liệu sitecore dường như (như thường lệ) hoàn toàn bỏ sót một phần khá cơ bản của công việc này. Khoảng một phần ba tải xuống các tài liệu mà nó nêu :
Ok, điều này là rất sai lầm. Cái gì đây EnsureAttribute
dường như việc cần làm là tải dữ liệu cho khía cạnh vào lớp hiện tại từ mongo. Nếu bạn không làm điều này cho mọi sản phẩm trong khía cạnh của bạn thì nó không đặt giá trị từ mongoDb! Đây là sai lầm của tôi, tôi đã không "đảm bảo" mọi tài sản trong lớp.
Vì vậy, những gì đã xảy ra là,
- Tôi đưa dữ liệu của mình vào khía cạnh
- dữ liệu khía cạnh vẫn tồn tại trong Phiên và tôi có thể thấy, truy cập vào nó, thay đổi nó, v.v.
- Dữ liệu cuối cùng được chuyển sang mongo (xDb nếu bạn phải)
- người dùng trả lại, hệ thống nhận dạng họ một cách chính xác ( không cần xác định người dùng ,
SC_ANALYTICS_GLOBAL_COOKIE
làm điều này cho bạn) - Nhưng nó không tải dữ liệu (ra khỏi mongo và quay trở lại phiên) trừ khi bạn "đảm bảo" nó.
Vì vậy, EnsureAttribute
không "khai báo loại giá trị" (điều này hoàn toàn sai theo quan điểm của tôi) nó tải dữ liệu ra khỏi mongodb và vào Session
hiện tại .