json mongodb meteor jstree reactive-programming

json - Meteor `Deps.autorun` vs` Collection.observe`



mongodb jstree (1)

Deps.autorun, ahora Tracker.autorun es un bloque de cómputo reactivo. Mientras que observe Cambios proporciona una devolución de llamada cuando algo cambia.

Cuando utiliza Deps.autorun, todo el bloque en function() {...} volverá a ejecutarse cada vez que una variable reactiva, o documento, cambie de alguna forma (que se actualice, elimine o inserte), o cualquier otro cambio de variable reactiva.

Las callbacks de observeChanges están más afinadas, y activan las devoluciones de llamada para agregarlas, cambiarlas o eliminarlas según la consulta.

De acuerdo con su código anterior, en efecto ambos son iguales. Si tuvieras más variables reactivas en el bloque Deps.autorun, la forma de hacerlo sería más eficiente.

En general, el primer estilo es más eficiente, pero como su código se encuentra arriba, ambos son casi iguales y depende de su preferencia.

¿Cuáles son los pros / contras entre usar Deps.autorun o Collection.observe para mantener un widget de terceros sincronizado con Meteor.Collection reactivo Meteor.Collection

Por ejemplo, estoy usando jsTree para mostrar visualmente un árbol de directorios que he almacenado en mi MongoDB. Estoy usando este código para hacerlo reactivo:

// automatically reload the fileTree if the data changes FileTree.find().observeChanges({ added: function() { $.jstree.reference(''#fileTree'').refresh(); }, changed: function() { $.jstree.reference(''#fileTree'').refresh(); }, removed: function() { $.jstree.reference(''#fileTree'').refresh(); } });

¿Cuáles son los pros / contras de utilizar este método frente a una llamada Deps.autorun que se vería algo así como: (no probado)

Deps.autorun(function() { jsonData = FileTree.find().fetch(); $.jstree.reference(''#fileTree'')({''core'': {''data'': jsonData} }); });

Esto es solo un ejemplo. Pregunto sobre los pros / contras en general, no para este caso de uso específico.