ページが更新されると、Meteorセッションはリセットされますか?
どういうわけか、そうは思わなかったのですが、そうだと思います。それらを持続させる方法はありますか?
そうでない場合、これに対する最善の解決策は何でしょうか?
まだ登録されていなくても、ユーザーが更新した場合(このデータはユーザーに固有)に同じデータを表示できるようにしたいです。
実際にできることは、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メソッドとamplicate.store()が呼び出されます。 「サブクラス」が最初に作成されるとき、それはそのキー内の増幅のストアにあるすべてのものをロードするので、それらはget()ですぐに取得することができます。
ここでリーダーボードの例の実際のバリエーションをテストできます: https://github.com/sebastienbarre/meteor-leaderboard
これは古い質問ですが、「meteor session manager」の検索で2回目のヒットなので、パッケージu2622:persistent-sessionがこの問題を完全に解決することを追加することが重要だと思います。
のドキュメントから: https://atmospherejs.com/u2622/persistent-session
Installation
meteor add u2622:persistent-session
それでおしまい!これで、Session.setPersistentを使用して、更新後に保存するセッション変数を設定できます。
必要に応じて、Session.setにこれを実行させることもできます。以下の「オプション」セクションを参照してください。
Atmosphere用の serSession パッケージを作成しました。これは、基本的にユーザーベースの永続的なSession
です。
したがって、これを行う最良の方法は、amplicateJSパッケージを使用することだと思います。
これが彼らがそれをどのように使用したかを示す誰かの要点です: https://Gist.github.com/2865146
Session
は、リアクティブなグローバルキー値ストアです。
http://docs.meteor.com/#session
Sessionは、任意のキーと値のペアのセットを格納するために使用できるグローバルオブジェクトをクライアントに提供します。現在選択されているアイテムなどをリストに保存するために使用します。
セッションの特別な点は、反応性があることです。テンプレート内からSession.get( "currentList")を呼び出すと、Session.set( "currentList"、x)が呼び出されるたびにテンプレートが自動的に再レンダリングされます。
クライアントで何かを永続化する必要がある場合は、ブラウザlocalstorage
を使用するか、古いブラウザを使用する場合はCookieを使用できます。