1

次の情報を持つ文字のコレクションがあります。

{
  { 
    name: "Character1",
    user_id: "user1"
  },
  {
    name: "Character2",
    user_id: "user2"
  }
}

ここで、クライアント側で次のようにコレクションを受け取りたいと思います: 私が user1 の場合、これを取得します:

{
  { 
    name: "Character1",
    user_id: "user1"
  },
  {
    name: "Character2",
  }
}

基本的に、そのユーザーに属さない文字から user_id を取り除きます。

私がしたことは: return Characters.find({},{fields: {user_id:0} } );

現在のユーザーのフィールドを保持するにはどうすればよいですか?

4

1 に答える 1

3

1 つは人物のキャラクター用、もう 1 つはすべてのキャラクター用です (これにより、公開したくないフィールドが削除されます)。結果がマージされます。

DDP仕様ごとのもう少し情報:

クライアントは、コレクションごとに 1 セットのデータを維持します。各サブスクリプションは独自のデータストアを取得しませんが、重複するサブスクリプションにより、サーバーは 1 つのコレクションのデータに関する事実の結合を送信します。たとえば、サブスクリプション A が document x has fields{foo: 1, bar: 2}を示し、サブスクリプション B が document xhas fieldsを示している場合、クライアントには document has fields {foo: 1, baz:3}が通知されます。異なるサブスクリプションのフィールド値が互いに競合する場合、サーバーは可能なフィールド値の 1 つを送信する必要があります。x{foo: 1, bar: 2, baz: 3}

于 2013-06-08T21:41:20.797 に答える