問題タブ [meteor-publications]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
55 参照

meteor - Meteor の出版物/サブスクリプションが期待どおりに機能しない

私は2つの出版物を持っています。

最初の pub は検索を実装します。特にこの検索

2番目のものは基本的にいくつかのフィールドを返します

私は次のように各出版物を購読しました:

ここに私の問題があります: 2 番目のサブスクリプション (へappointments.patients) を使用すると、最初のサブスクリプションが機能しません。2 番目のサブスクリプションにコメントすると、最初のサブスクリプションが再び機能します。ここで何が間違っているのかわかりません。

0 投票する
1 に答える
75 参照

mongodb - Meteor - すべてのコレクション データを公開しないのはなぜですか?

これは私の理解不足かもしれないので、答えるのが非常に簡単な質問かもしれませんが、クエリを 2 回 (サーバーで 1 回、クライアントで 1 回) 実行する必要がある場合は、すべてのコレクション データを公開しないでください。次に、クライアントで 1 つのクエリを実行するだけですか?

もちろん、users コレクションに対してこれを行うつもりはありませんが、ブログの Posts コレクションがある場合、これは有益ではないでしょうか?

すべての投稿データを公開してからサブスクライブし、クライアントで必要なクエリを実行して、必要なデータを取得します。

0 投票する
1 に答える
245 参照

meteor - Meteor でサブスクリプションが重複するとパフォーマンスが低下しますか?

これが私の問題です。

ユーザーがメモ帳にメモを保存できるアプリがあります。

現在、ユーザーがメモ帳をクリックすると、そのメモ帳の最初の 5 つのメモを返すパブリケーションを購読しています。

したがって、ユーザーが新しいメモ帳に移動するたびに、新しいサブスクリプションが設定され、そのメモ帳の 5 つのメモが minimongo になります。したがって、ミニモンゴは一度に 5 つのノートしかノート コレクションに持ちません。

ユーザー エクスペリエンスを向上させるために、パブリケーションを変更したので、アプリ全体の初期ロード時に、すべてのメモ帳と各メモ帳の最初の 5 つのメモを返すパブリケーションをサブスクライブします。これで、minimongo では、常に (5 x (メモ帳の数)) の数のメモが作成されます。

そのため、最初の負荷は少し重くなりますが、その後、メモ帳間の移動がはるかに高速になることを願っています.

したがって、ロード時にサブスクライブするmyInfoと、ユーザーのメモ帳が返され、メモ帳ごとに 5 つのメモが作成されます。

次に、実際にメモ帳をクリックすると、私は を購読しmyNotepadInfoます。これは、メモ帳の最初の 5 つのメモも返します。最初のサブスクリプションで既にこの情報を取得しているため、実際には minimongo のドキュメントは変更されません。myNotepadInfoしかし、テンプレートのサブスクリプションに依存するもっと多くのノートをロードするメカニズムがあるため、まだサブスクライブしたいと思っています。

したがって、私のアプリはこれらの変更に完全に対応していますが、内部で何が起こっているのか、この方法が実際にパフォーマンスを向上させているのかはわかりません。変更後のメモ帳の読み込み方法に具体的な違いは見られません。

したがって、基本的に、最初のサブスクリプションと重複する2番目のサブスクリプションがあります。

私には、2 番目のサブスクリプションが最初のサブスクリプションと重複しているため、クライアントに転送するドキュメントが少なくて済むように思えます。

0 投票する
1 に答える
234 参照

mongodb - Meteor パブリケーションの一部の述語に基づいてサブドキュメント (配列) をフィルタリングするにはどうすればよいですか?

フィールドだけでなく、配列フィールド内のオブジェクトもフィルタリングしようとしています。以下の例を参照すると、セグメント フィールドの場合、クライアントにセグメント配列内のオブジェクトのみを取得させたいと考えています。isReleased === true

スキーマの例

基本的にはクライアントに受け取ってもらいたいのですが

0 投票する
2 に答える
139 参照

javascript - MongoDB: メイン ドキュメントとすべての祖先を取得する方法

コレクションから一連のドキュメントを提供する出版物を作成する必要があります。ここでは、ドキュメントが互いにどのように関連しているかを確認できます。

したがって、私が知っているのは最初のドキュメントの ID であり、パブリケーション内のすべての祖先も必要です。

0 投票する
1 に答える
21 参照

javascript - スコープを超えた MeteorJS の公開

次のテンプレートがあります。

テンプレートに出版物を添付しましたが、reportsSummaryテンプレートにも拡張されているようreportsPatientsです。pubs/subs を定義するための正しい方法に従っているので、その理由はわかりません (私は思う...)。

パブリケーションを購読せずにヘルパーからreportsPatients戻った場合、次のデータも取得しているため、拡張していることはわかっています。Appointments.find()reportsPatientsreportsSummary

これが私の出版物です:

そして、これが私のサブスクリプションです:

私が持っているものが機能自体を壊しているわけではありません。アプリにふるいにかけなければならない大量のデータがある場合、効率が心配です。ここで何か不足していますか?

0 投票する
1 に答える
80 参照

arrays - Meteor パブリケーションの配列から単一のインデックスを返す方法

すべてのユーザーが利用できる「タスク」のコレクションがあります。ユーザーは、「タスクを完了した」ことにチェックを入れることができます。これを行うと、「usersCompleted」というタスク ドキュメントに添付されている配列に userId を追加するメソッドが呼び出されます。ユーザーがタスクを完了した場合、そのユーザー ID はその配列に含まれます。

この配列をクライアントに公開したくありません。すべてのユーザーが他の userId を含む配列にアクセスできるようになるためです。

ただし、ユーザーの ID がこの配列にあるかどうかを確認し、「checked」または「」を返すヘルパーが必要です。このようにして、ユーザーは完了したタスクを確認できます。

私の出版物では、ユーザーが完了したすべてのタスクを見つけることができますが、「usersCompleted」配列から ID だけを返すことはできません。誰かが私を助けることができれば、それは大歓迎です。

以下は私の現在のコードですが、 $elemMatch が正しく使用されていません

0 投票する
1 に答える
34 参照

mongodb - Meteor 出版物で見つかったエントリに基づいてエントリを追加します

既に見つかったエントリに基づいて、Meteor の出版物に新しいエントリを追加したいと考えています。私はこのようなsthを持っています:

どうすれば管理できますか?

//編集

さて、もう一度: 私の最初のオブジェクトは次のようになります:

2番目のものは次のようなものです:

_id最初のものだけを知っているので、両方を(並行エントリとして)受け取りたいです。