2012-10-22 25 views
5

Kullanıcılarımda istemcide saklanan Facebook accessToken uygulamasını istiyorum. meteor documentation'un ardından yeni bir yayınlama araması eklemeliyim. server.js olarakMeteor.users koleksiyonuna nasıl alanlar eklenir

:

Meteor.publish("access_token", function() { 
    return Meteor.users().find(
    { _id : Meteor.userId() }, 
    {'services.facebook.accessToken': 1} 
); 
}); 

client.js ise: Ben kaybolmak nereye

Meteor.subscribe("access_token"); 

Tamam, burada. AccessToken şimdi oturum açan kullanıcı için Meteor.users koleksiyonunda görünecek mi? Beğen:

var user = Meteor.users.findOne({ _id : Meteor.userId() }); 
console.log(user); // includes services.facebook.accessToken now 

Açıkçası, yukarıda denedim ve accessToken görünmüyor. Evet, mongo belgesinin services.facebook içerdiğini doğruladım.

Bu yüzden yeni bir istemci koleksiyonu oluşturup bir şekilde yeni yayınlara bağlarım mı? AccessToken'i nasıl alabilirim?

cevap

9

sen İstediğin alanını yayınlayabilir "alanları" anahtar kelime

Meteor.users.find({ _id: this.userId }, 
    { fields: { the-extra-fields-that-you-want-go-here: 1 } } 
); 

http://docs.meteor.com/#fieldspecifiers

+0

Aslında çift parantez kaldırmalısınız, bu hataya neden oluyor . Yanılmıyorsam doğru cevap: 'Meteor.users() bulmak ({_id: this.userId}, {alanları: {extra_fields: 1}} ); – Mercutionario

+1

haklısınız. yanlış yazarak ~~~ – crapthings

4

kullanmalıdır:

Meteor.publish(null, function() { 
    Meteor.users.find({}, {fields: {profile: 1, username: 1, ...}}) 
} 
+1

Bu her zaman doğru değil. Kullanıcı koleksiyonunu (kullanıcı-çevrimiçi eklenti) açığa çıkarırsanız, Meteor.users() kullanıcılarla tüm çevrimiçi kullanıcıları bulabilir. –

İlgili konular