Quiere query.observe()
para esto. Supongamos que tiene una colección Posts
con un campo de etiquetas y desea recibir una notificación cuando se agrega una publicación con la etiqueta important
.
http://docs.meteor.com/#observe
// collection of posts that includes array of tags
var Posts = new Meteor.Collection('posts');
// DB cursor to find all posts with 'important' in the tags array.
var cursor = Posts.find({tags: 'important'});
// watch the cursor for changes
var handle = cursor.observe({
added: function (post) { ... }, // run when post is added
changed: function (post) { ... } // run when post is changed
removed: function (post) { ... } // run when post is removed
});
Puede ejecutar este código en el cliente, si usted quiere hacer algo en cada navegador cuando un poste de cambios. O puede ejecutar esto en el servidor, si desea enviar un correo electrónico al equipo cuando se agrega una publicación importante.
Tenga en cuenta que added
y removed
hacen referencia a la consulta, no al documento. Si usted tiene un documento puesto existente y ejecutar
Posts.update(my_post_id, {$addToSet: {tags: 'important'}});
esto desencadenará la devolución de llamada 'añadido', ya que el puesto se van añadiendo al resultado de la consulta.
Una cosa que no he probado es si las inserciones en las colecciones de MongoDB hechas * fuera * de Meteor se propagan a los clientes. – fadedbee
He robado el código, pero no puedo ver la línea donde MongoDB notifica a Meteor de las actualizaciones de las colecciones. – fadedbee
@chrisdew Acabo de insertar un registro directamente a MongoDB y apareció en el navegador. Así que supongo que el servidor recibe una notificación. –