Pubblicare la mia risposta in modo che non rimanga aperta:
I modelli della versione 4 (stabile rilasciata il 25-03-2015) ora espongono un hydrate()
metodo. Nessuno dei campi sarà contrassegnato come sporco inizialmente, significa una chiamata a save()
non farà nulla finché un campo non sarà mutato.
È molto importante notare che questo è inteso per essere utilizzato per convertire un semplice oggetto JS caricato dal database in un documento mangusta. Se stai ricevendo un documento da un servizio REST o qualcosa del genere, dovresti usare findById()
e update()
.
Per chi vive pericolosamente:
Se vuoi davvero aggiornare un documento esistente senza toccare il database, suppongo che potresti chiamare hydrate()
, contrassegna i campi come sporchi e quindi chiama save()
. Questo non è troppo diverso dal metodo di impostazione di doc.isNew = false;
come ho suggerito nella mia domanda originale. Tuttavia, Valeri (della squadra della mangusta) ha suggerito di non farlo. Potrebbe causare errori di convalida e altri problemi di edge case e in genere non è una buona pratica. findById è davvero veloce e non sarà il tuo collo di bottiglia.