2016-03-24 33 views
0

yayımlamak: userids besbelli kullanıcılar dokümana ilişkin Meteor kendi ObjectIds olan Bağlama kullanıcıların ben aşağıdaki biçimde bir Mongo belge var

Group: { 
    participants: [ 
     userId, 
     userId, 
     userId 
    ] 
} 

....

Gerçekten sahip olduğum sorun, kullanıcıların kendi gruplarındaki diğer kullanıcı bilgilerini görüntülemelerini istiyorum. Bu uygulamada güvenli bir şekilde hayal ediyorum (okuyun: otomatik çeviri ve güvensizliği kaldırdım) grup-mesajlaşma sistemini.

My yayımlamak şu anki uygulama şuna benzer:

//grab all groups user belongs to 
Meteor.publish("groups", function() { 
    var groups = Groups.find({ 
     participants: { 
      $in: [ this.userId ] 
     } 
    }); 
    return groups; 
}); 

Şimdi, ideal olarak, ben sadece bunun yanı sıra her bir katılımcının user.profile veri yayınlama yayınlamadan tamamlayamadan groups işlemek için bazı kod uygulamak isteriz. olarak olacağını hayal nihai biçimi aşağıdaki gibidir: Fark ettim

Group: { 
    participants: { 
     userId 
    }, 
    users: { 
     { //One of these for each user 
      userId, 
      firstName, 
      lastName, 
      otherData 
     } 
    } 
} 

Bir şey autopublish ve güvensiz olmadan, sadece bir yardımcı işlevi yoluyla istemci üzerinde bunu yapamaz olmasıdır.

cevap

1

Bu reywood:publish-composite paket için oldukça basit bir kullanım durumu: Kullanıcıların _id alanı her zaman dahildir

Meteor.publishComposite('groups', { 
    find: function() { 
     return Groups.find({ participants: { $in: this.userId }}); 
    }, 
    children: [ 
     { 
      find: function(group) { 
       return Meteor.users.find(
        { _id: { $in: group.participants }, 
        { fields: { firstName: 1, lastName: 1, otherData: 1 }}); 
      } 
     }, 
    ] 
}); 

Not olduğunu, açıkça fields: listede dışarı aramaya gerek yoktur.

+0

Buradan, bu çocuk verilerine nasıl erişebilirim? Koleksiyonu Chrome konsoluna kaydettim ve bu içeriğin içereceği yeni bir dizi göremiyorum. – Henry

+0

Kod oluşturuyor, ancak istemciye gönderilen yeni verileri göremiyorum. – Henry

+0

İstemcide, "Meteor.users" koleksiyonunda ek belgeler göreceksiniz, ancak yalnızca talep ettiğiniz alanlar var. Ayrı bir dizi yok. –