実際にできることは、set() が呼び出されたときに Amplify のストアに値を格納する Session の「サブクラス」を作成することです。Session のすべてのリアクティブ プロパティを自動的に継承します。これがコードです、それは私のために働いた:
SessionAmplify = _.extend({}, Session, {
keys: _.object(_.map(amplify.store(), function(value, key) {
return [key, JSON.stringify(value)]
})),
set: function (key, value) {
Session.set.apply(this, arguments);
amplify.store(key, value);
},
});
すべての Session.set/get 呼び出しを SessionAmplify.set/get 呼び出しに置き換えるだけです。set() が呼び出されると、親の Session メソッドが呼び出され、amplify.store() も呼び出されます。「サブクラス」が最初に作成されると、増幅のストアにあるすべてのものをそのキー内にロードします。
ここでリーダーボードの例の実際のバリエーションをテストできます: https://github.com/sebastienbarre/meteor-leaderboard