Books = new Meteor.Collection('books');
// Server
Observations = new Meteor.Collection('observations');
var year = 1999;
Meteor.startup(function () {
Observations.remove({});
Observations.insert({
year: year
});
});
// Some very interesting books
var books = [
{title: 'Book 1', year: 1999},
{title: 'Book 2', year: 2000},
{title: 'Book 3', year: 2001},
{title: 'Book 4', year: 2002},
{title: 'Book 5', year: 2003},
{title: 'Book 6', year: 2004},
{title: 'Book 7', year: 2005},
{title: 'Book 8', year: 2006},
{title: 'Book 9', year: 2007}
];
Meteor.publish('books', function () {
var self = this;
var initializing = true;
var handle = Observations.find({}, {sort: {year: -1}, limit: 1}).observeChanges({
added: function (id, fields) {
console.log('added');
if (!initializing) {
var addBooks = _.filter(books,function(book){
return self.maxBookYear < book.year && book.year <= fields.year;
});
self.maxBookYear = fields.year > self.maxBookYear ? fields.year : self.maxBookYear;
_.each(addBooks, function (book) {
var id= Random.id();
self.added('books', id, book);
});
}
}
});
initializing = false;
self.maxBookYear = year;
self.added("books", Random.id(), {title: 'Book 0', year: year});
self.ready();
});
Meteor.setInterval(function () {
console.log('insert');
Observations.insert({
year: ++year
});
}, 10000);