Opublikowanie własnej odpowiedzi, aby nie pozostało otwarte:
Modele w wersji 4 (stabilna wydana 25.03.2015) mają teraz hydrate()
metoda. Żadne z pól nie zostanie oznaczone jako brudne początkowo, co oznacza wywołanie save()
nie zrobi nic, dopóki pole nie zostanie zmutowane.
Bardzo ważne jest, aby pamiętać, że jest to przeznaczone do konwersji zwykłego obiektu JS załadowanego z bazy danych na dokument mangusty. Jeśli otrzymujesz dokument z usługi REST lub czegoś podobnego, powinieneś użyć findById()
i update()
.
Dla tych, którzy żyją niebezpiecznie:
Jeśli naprawdę chcesz zaktualizować istniejący dokument bez dotykania bazy danych, przypuszczam, że możesz wywołać hydrate()
, oznacz pola jako brudne, a następnie wywołaj save()
. Nie różni się to zbytnio od metody ustawienia doc.isNew = false;
jak sugerowałem w moim pierwotnym pytaniu. Jednak Valeri (z zespołu mangusty) zasugerował, aby tego nie robić. Może to powodować błędy walidacji i inne problemy ze skrajnymi przypadkami i generalnie nie jest dobrą praktyką. findById jest naprawdę szybki i nie będzie Twoim wąskim gardłem.