Collection helpers automatically sets up a transformation on your collections allowing for simple models, with an interface similar to template helpers.
$ meteor add dburles:collection-helpers
It's recommended to set up helpers to run on both server and client. This way your helpers can be accessed both server side and client side.
Some simple helpers:
Books = new Mongo.Collection('books');
Authors = new Mongo.Collection('authors');
Books.helpers({
author: function() {
return Authors.findOne(this.authorId);
}
});
Authors.helpers({
fullName: function() {
return this.firstName + ' ' + this.lastName;
},
books: function() {
return Books.find({ authorId: this._id });
}
});
Our relationships are resolved by the collection helper, avoiding unnecessary template helpers. So we can simply write:
Template.books.helpers({
books: function() {
return Books.find();
}
});
...with the corresponding template:
<template name="books">
<ul>
{{#each books}}
<li>{{name}} by {{author.fullName}}</li>
{{/each}}
</ul>
</template>
You can of course access helpers outside of your templates:
Books.findOne().author().firstName; // Charles
Books.findOne().author().fullName(); // Charles Darwin
You can also apply helpers to the Meteor.users collection
Meteor.users.helpers({
// ...
});
MIT