Si desidera query.observe()
per questo. Supponiamo che tu abbia una collezione Posts
con un campo tag e che tu debba ricevere una notifica quando viene aggiunto un post con il tag 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
});
È possibile eseguire il codice sul client, se si vuole fare qualcosa in ogni browser quando un post cambiamenti. Oppure puoi eseguirlo sul server, se vuoi dire invia una mail al team quando viene aggiunto un post importante.
Nota che added
e removed
si riferiscono alla query, non al documento. Se si dispone di un documento post esistente e si esegue
Posts.update(my_post_id, {$addToSet: {tags: 'important'}});
questo farà scattare il callback 'aggiunto', dal momento che il post è sempre aggiunto il risultato della query.
Una cosa che non ho testato è se gli inserimenti nelle raccolte MongoDB eseguite * all'esterno * di Meteor vengono propagati ai client. – fadedbee
Ho sfogliato il codice, ma non riesco a vedere la linea in cui Meteor è stata informata da MongoDB degli aggiornamenti alle raccolte. – fadedbee
@chrisdew Ho appena inserito un record direttamente in MongoDB ed è apparso nel browser. Quindi immagino che il server venga avvisato. –