sql >> Base de Datos >  >> NoSQL >> MongoDB

Enviar objeto simple a documento de mangosta

Publicar mi propia respuesta para que esto no quede abierto:

Los modelos de la versión 4 (estables lanzados el 25 de marzo de 2015) ahora exponen un hydrate() método. Ninguno de los campos se marcará como sucio inicialmente, lo que significa una llamada a save() no hará nada hasta que se mute un campo.

https://github.com/LearnBoost/mongoose /blob/41ea6010c4a84716aec7a5798c7c35ef21aa294f/lib/model.js#L1639-1657

Es muy importante tener en cuenta que está destinado a ser utilizado para convertir un objeto JS simple cargado desde la base de datos en un documento mangosta. Si está recibiendo un documento de un servicio REST o algo así, debe usar findById() y update() .

Para aquellos que viven peligrosamente:

Si realmente desea actualizar un documento existente sin tocar la base de datos, supongo que podría llamar a hydrate() , marque los campos como sucios y luego llame a save() . Esto no es muy diferente al método de establecer doc.isNew = false; como sugerí en mi pregunta original. Sin embargo, Valeri (del equipo de mangosta) sugirió no hacerlo. Podría causar errores de validación y otros problemas de casos extremos y, en general, no es una buena práctica. findById es realmente rápido y no será su cuello de botella.