8

したがって、私がMeteorで観察してきた、より紛らわしい側面の1つは、セッションが更新のたびにクリアされることです。永続的なストアではないので、useridのようなものをどこに置くのでしょうか、それともアプリケーションのステートマシンのどこに人がいるのでしょうか。

それらのシナリオのパターンは何ですか?

4

2 に答える 2

8

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

于 2013-02-02T05:56:15.277 に答える
3

まず、Auth に組み込まれたmeteors を使用してuserID を保存します。彼らはデフォルトでローカルストレージを使用していると思いますが、私の知る限り、それにフックする簡単な方法はありません。

ただし、更新後も保持する必要がある場合は、mongo に保存するか、URL を使用して「ステート マシン」のどこにあるかを示す必要があると考えていました。ブートストラップ ルーター (たとえば) を使用pushStateして、URL を変更できます。

于 2012-07-29T07:29:58.743 に答える