web-dev-qa-db-ja.com

Meteorセッションとブラウザの更新

ページが更新されると、Meteorセッションはリセットされますか?

どういうわけか、そうは思わなかったのですが、そうだと思います。それらを持続させる方法はありますか?

そうでない場合、これに対する最善の解決策は何でしょうか?

まだ登録されていなくても、ユーザーが更新した場合(このデータはユーザーに固有)に同じデータを表示できるようにしたいです。

27
Jonovono

実際にできることは、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

10
sebastien.b

これは古い質問ですが、「meteor session manager」の検索で2回目のヒットなので、パッケージu2622:persistent-sessionがこの問題を完全に解決することを追加することが重要だと思います。

のドキュメントから: https://atmospherejs.com/u2622/persistent-session

Installation

meteor add u2622:persistent-session

それでおしまい!これで、Session.setPersistentを使用して、更新後に保存するセッション変数を設定できます。

必要に応じて、Session.setにこれを実行させることもできます。以下の「オプション」セクションを参照してください。

8
Wes

Atmosphere用の serSession パッケージを作成しました。これは、基本的にユーザーベースの永続的なSessionです。

4
BenjaminRH

したがって、これを行う最良の方法は、amplicateJSパッケージを使用することだと思います。

これが彼らがそれをどのように使用したかを示す誰かの要点です: https://Gist.github.com/2865146

1
Jonovono

Sessionは、リアクティブなグローバルキー値ストアです。

http://docs.meteor.com/#session

Sessionは、任意のキーと値のペアのセットを格納するために使用できるグローバルオブジェクトをクライアントに提供します。現在選択されているアイテムなどをリストに保存するために使用します。

セッションの特別な点は、反応性があることです。テンプレート内からSession.get( "currentList")を呼び出すと、Session.set( "currentList"、x)が呼び出されるたびにテンプレートが自動的に再レン​​ダリングされます。

クライアントで何かを永続化する必要がある場合は、ブラウザlocalstorageを使用するか、古いブラウザを使用する場合はCookieを使用できます。

0
Andreas