Първият голям въпрос, когато се потопите в това, е "как искате да съхранявате набори от промени" ?
- Разлики?
- Цели копия на записи?
Моят личен подход би бил да съхранявам разликите. Тъй като показването на тези разлики е наистина специално действие, бих поставил разликите в различна колекция „история“.
Бих използвал различната колекция, за да спестя място в паметта. Обикновено не искате пълна история за проста заявка. Така че, като държите историята извън обекта, можете също да я държите извън често достъпната памет, когато тези данни са запитани.
За да улесня живота си, бих накарал исторически документ да съдържа речник на разликите с времеви печат. Нещо като това:
{
_id : "id of address book record",
changes : {
1234567 : { "city" : "Omaha", "state" : "Nebraska" },
1234568 : { "city" : "Kansas City", "state" : "Missouri" }
}
}
За да направя живота си наистина лесен, бих направил тази част от моите DataObjects (EntityWrapper, каквото и да е), които използвам за достъп до моите данни. Обикновено тези обекти имат някаква форма на история, така че можете лесно да замените save()
метод, за да направите тази промяна едновременно.
АКТУАЛИЗИРАНЕ:2015-10
Изглежда, че вече има спецификация за обработка на JSON diff. Това изглежда като по-стабилен начин за съхраняване на разликите/промените.