1

そこで、Ionic 2 CLI を使用して angular-meteor WhatsApp クローン チュートリアルの上に構築しようとしています。

このチュートリアルでは、基本的clientに meteor プロジェクト内のフォルダーを削除し、ionic プロジェクト内のmeteor-client-side パッケージを使用して meteor サーバーに接続します。

これは完全に正常に機能しますが、リアクティブパラメーターを使用して流星の出版物を購読したいと思います。

Meteor API ドキュメントを検索した後、Sessionオブジェクトを見つけました。

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

Session の特別な点は、リアクティブであることです。テンプレート内から呼び出すと 、 が呼び出されるSession.get("currentList") たびにテンプレートが自動的に再レン​​ダリングさ  Session.set("currentList", x) れます。

Meteor サブスクライブ ドキュメントでは、次の例を見つけることができます。

Tracker.autorun(function () {

Meteor.subscribe("chat", {room: Session.get("current-room")});

Meteor.subscribe("privateMessages");

});

これにより、現在のルームのチャット メッセージとプライベート メッセージに登録されます。Session.set("current-room", "new-room") を呼び出してルームを変更すると、Meteor は新しいルームのチャット メッセージをサブスクライブし、元のルームのチャット メッセージをサブスクライブ解除し、プライベート メッセージを引き続きサブスクライブします。 .

それはまさに私もやりたいことです。しかし、Session のドキュメントに記載されているように、session は meteor プロジェクトに追加する必要があるパッケージです。

アプリケーションにセッションを追加するには、ターミナルで次のコマンドを実行します。

meteor add session

私の質問ですが、meteor-client-side パッケージにセッションを追加する方法はありますか?

呼び出そうとするとSession.set()、実行時に失敗しますSession is not defined

私の推測では、 accounts-base-client-side のようなセッション機能 (基本的にはセッション クライアント側の npm パッケージ) を抽出する npm パッケージが必要になると思います。

これを行う他の方法はありますか?独自のセッションクライアント側を構築するにはどうすればよいですか?

meteor プロジェクトで実行しようとしましたが、フォルダ内meteor add sessionのどこにも Session のコードが見つかりませんでした。.meteornpm_modules

meteor GitHubも調べましたが、彼らが持っているSession.jsファイルにはドキュメントしか含まれていません

このようなことを行う方法についての入力はいいでしょう

アップデート:

accounts-base-client-side パッケージを調べたところ、スクリプトを使用して自動生成されていることがわかったので、現在、このスクリプトを accounts-base ではなく Session で動作するように調整しようとしています。私の試みはhttps://github.com/AwsmOli/session-client-sideにあります。

まだ作業中ですが、すぐに動作するようにする必要があります

更新 2:

私の答えを見てください、私のセッションクライアント側は今働いています:)

4

3 に答える 3

1

meteor docsに従って、インポートする必要があります。

import { Session } from 'meteor/session'

これにより、クライアントで有効になります。

以前のバージョンの meteor では、これはデフォルトのパッケージであり、グローバル名前空間に自動的にインポートされるため、必要ありませんでした。

于 2016-11-18T03:04:00.477 に答える
1

「Session」変数が表示され、アクセスできるようになります。それを確認する必要がある場合は、新しいプロジェクトを開始してパッケージを追加し、それにアクセスするためのコードを記述します。何かが (無意識のうちに) Session 変数を無効にした可能性があります - 以前に別のパッケージでこれを見たことがあります。

これを行う別の方法は、「getReactively」を使用することです。以下は、クエリでそれを使用するヘルパーです。必ずヘルパーの前に宣言してください (そうしないと機能しません)。これは別のヘルパーの結果を使用しますが、任意の変数にすることができ、反応性に変数を割り当てて、ヘルパーを起動して実行するだけです。

this.helpers({
  currentUser: () => { return Meteor.user() },
  elder: () => {
    let e = Elders.findOne({_id: this.getReactively('this.currentUser._id')});
    if (e) {
      utils.services.setupElder(e);
    }
    return e;
  }
});
于 2016-11-17T20:15:16.590 に答える