提案されたソリューションはどれも機能します。それぞれのパフォーマンス特性に依存すると思いますが、これはおそらく自分で調べる必要があるものです.
率直に言って、これらをリアクティブなモノリシック JSON オブジェクトで返す場合、構造によっては、何かが変更されるたびに計算全体を再実行する必要があり、おそらく非効率的です。変更されたデータに対してのみ計算を再実行するだけなので、メソッドを別々にしておく方が良いようです。
simple:reactive-method パッケージまたはDiscover Meteor パターンをチェックして、テンプレート ヘルパーで Meteor メソッドを使用すると、少し簡単になります。私が提案するパターンは次のようなものです。
// lib JS
Meteor.methods({
userCount: function() {
var user = Meteor.user();
if (user && user.admin) {
return Meteor.users.find().count();
}
}
});
// Client JS
Template.dashboard.helpers({
userCount: function() {
return ReactiveMethod.call('userCount');
},
isAdmin: function() { return Meteor.user().admin; }
});
// HTML
<template name='dashboard'>
{{#if isAdmin}}
There are {{userCount}} users.
... <!-- any other stuff you want -->
{{/if}}
</template>