したがって、私がMeteorで観察してきた、より紛らわしい側面の1つは、セッションが更新のたびにクリアされることです。永続的なストアではないので、useridのようなものをどこに置くのでしょうか、それともアプリケーションのステートマシンのどこに人がいるのでしょうか。
それらのシナリオのパターンは何ですか?
したがって、私がMeteorで観察してきた、より紛らわしい側面の1つは、セッションが更新のたびにクリアされることです。永続的なストアではないので、useridのようなものをどこに置くのでしょうか、それともアプリケーションのステートマシンのどこに人がいるのでしょうか。
それらのシナリオのパターンは何ですか?
実際にできることは、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() も呼び出されます。「サブクラス」が最初に作成されると、増幅のストアにあるすべてのものをそのキー内にロードし、get() ですぐに取得できるようにします。
ここでリーダーボードの例の実際のバリエーションをテストできます: https://github.com/sebastienbarre/meteor-leaderboard
まず、Auth に組み込まれたmeteors を使用してuserID を保存します。彼らはデフォルトでローカルストレージを使用していると思いますが、私の知る限り、それにフックする簡単な方法はありません。
ただし、更新後も保持する必要がある場合は、mongo に保存するか、URL を使用して「ステート マシン」のどこにあるかを示す必要があると考えていました。ブートストラップ ルーター (たとえば) を使用pushState
して、URL を変更できます。