Chcesz, żeby to było query.observe()
. Załóżmy, że masz kolekcję Posts
z polem tagów i chcesz otrzymywać powiadomienia, gdy dodany zostanie wpis ze znacznikiem 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
});
Można uruchomić ten kod na kliencie, jeśli chcesz coś zrobić w każdej przeglądarce kiedy zmiany Post. Możesz też uruchomić to na serwerze, jeśli chcesz powiedzieć wysłać e-mail do zespołu, gdy zostanie dodany ważny wpis.
Należy pamiętać, że added
i removed
odnoszą się do zapytania, a nie do dokumentu. Jeśli masz istniejący dokument post i uruchomić
Posts.update(my_post_id, {$addToSet: {tags: 'important'}});
to wywoła „dodaną” zwrotnego, ponieważ poczta jest coraz dodany do wyniku zapytania.
Jedną z rzeczy, których nie testowałem, jest to, czy wkładki w kolekcjach MongoDB są wykonywane * na zewnątrz * Meteora są propagowane do klientów. – fadedbee
Przeszukałem kod, ale nie widzę linii, w której Meteor jest powiadamiany przez MongoDB o aktualizacjach kolekcji. – fadedbee
@chrisdew Właśnie wstawiłem rekord prosto do MongoDB i pojawił się on w przeglądarce. Więc domyślam się, że serwer zostanie powiadomiony. –