7

私の流星アプリでは、ユーザー アクティビティに関する一時的な情報を保存するために Session を使用しています。この情報の一部をamplify.jsを使用してブラウザに保持したいのですが、すべてではありません。

「一時的な」セッション キーと「永続的な」セッション キーを持つ方法が欲しいです。たとえば、私は電話することができます

Session.set('persistent', 'this is persisted to browser memory');
Session.set('temporary', 'this will be erased on page reload, etc');

そして、ページのリロード後

Session.get('persistent'); // returns 'this is persisted to browser memory'
Session.get('temporary'); // returns undefined

SOに関する関連記事を見つけましたが、これにより、このアプローチがSessionオブジェクト全体を永続化するのを防ぎます。これはやりたくないことです。また、これにはMongoDBを使用したくありません。ストレージを純粋にクライアント側にしたいのですが...

よろしくお願いします!

4

2 に答える 2

11

を使用しlocalStorageます。リアクティブにしたい場合は少しトリッキーですが、それをSession一緒に行うために使用できると思いますlocalStorage

起動時に、ブラウザの localStorage jar からアイテムを取得します

Meteor.startup(function() {
    Session.set("yourItem", localStorage.getItem("yourItem"));
});

設定時:

localStorage.setItem("yourItem", "yourValue");
Session.set("yourItem", localStorage.getItem("yourItem"));

MongoDB などを使用しない限り不可能なことの 1 つは、これを 1 つのタブで設定すると、ページを更新するまで他のタブで変更されないことです。でもやっぱりSessionはこんな感じかな。

于 2013-10-27T14:12:36.313 に答える
7

Meteorオブジェクトを使用して情報を設定およびアクセスできるようにしながら、パッケージを使用してローカルストレージ機能をu2622:persistent-session活用することに成功しました。amplify.jsSession

を行った後meteor add u2622:persistent-session、次に進み、次のようなことを行うことができます。

  • Session.setPersistent(key, value)
  • Session.setDefaultPersistent(key, value)

u2622:persistent-sessionブラウザの localStorage を手動でクリアしない限り、タブとリロード間でデータを維持します。

詳細については、Githubページをご覧ください

于 2015-03-17T03:44:57.097 に答える