3

Meteor.publish を使用してドキュメントをクライアント側のコレクションにプッシュする場合 ("messages-count" の例のように)、そのクライアント側のコレクション ("messages-count" と呼ばれる) を挿入/更新/削除するとどうなりますか?ドキュメントの例)?「messages-count」コレクションがサーバーに存在しないことを考えると、何かがサーバーに到達しますか? その場合、ドキュメントの変更をサーバーにどのように伝達しますか?

注: @debergalis の優れた回答を見て、この例を詳細に説明しています (ここ: https://stackoverflow.com/a/10566873/694222 )。これは完全に理にかなっています。ただし、ドキュメントを挿入/更新するためにクライアント側のコレクション (彼の例では「カウント」) が呼び出されたときに何が起こるかについては触れていません。

アップデート:

Counts というクライアント側のコレクション (Meteor.publish を使用して入力) がある場合、Counts.find は正常に動作しますが、Counts.insert は単に動作しません。関連する Meteor.method が見つかりません。これで問題ありません。

しかし今、私は新しい問題を抱えています。サブスクライブしたクライアント側のコレクションが公開されたサーバー側のコレクションと同じ名前である場合 (autopublish meteor パッケージは既に削除しています)、挿入クライアント側を実行するとサーバー側に伝播され、ドキュメントがサーバー側の mongo に追加されます。これは明らかに受け入れられません..

したがって、基本的に、同じ名前 (新しい Meteor.Collection に渡すもの) を持つクライアント側のコレクションは、autopublish パッケージがオフになっていても、同じ名前を持つサーバー側のコレクションを正常に更新できます。これはバグですか?

4

2 に答える 2

0

Meteor.publish を使用してドキュメントをクライアント側のコレクションにプッシュする場合 (「messages-count」の例のように)、そのクライアント側のコレクション (「messages-count」と呼ばれる) を挿入/更新/削除するとどうなりますか?ドキュメントの例)?

API ドキュメントの「messages-count」の例では、「名前付き」コレクションを使用しています。コレクション名は「messages-count」です。名前付きコレクションはすべてサーバー側に存在します。クライアント側を挿入/更新/削除すると、変更は自動的にサーバー コレクションに反映されます。

以下は API ドキュメントからの抜粋です。

コレクションを作成するときに名前を渡すと、永続的なコレクション (サーバーに保存され、すべてのユーザーに表示されるコレクション) が宣言されます。クライアント コードとサーバー コードはどちらも、同じ API を使用して同じコレクションにアクセスできます。

次の問題:

「messages-count」コレクションがサーバーに存在しないことを考えると、何かがサーバーに到達しますか?

コレクションはサーバー上に存在するため (上記を参照)、クライアント側のコレクションでのすべての挿入/更新/削除はサーバーに伝達されます。

その場合、ドキュメントの変更をサーバーにどのように伝達しますか?

クライアント側のみのコレクション (たとえば、null 名で作成されたコレクション) がある場合、サーバーに何を伝達する必要がありますか? 変更を反映させたい場合は、名前付きコレクションを使用します。

于 2012-05-23T01:35:26.483 に答える
0

messages-countはコレクションではなく、単一の属性を含む単一のレコードで設定されたレコードです。

ルーム ID を渡すと、そのカウントが返されます。その記録セットではこれ以上何もできません...

于 2012-05-19T10:29:31.413 に答える