2012-10-22 14 views
5

Chcę uzyskać dostęp do Facebooka, który jest przechowywany w dokumencie mojego użytkownika na kliencie. Po numerze meteor documentation powinienem dodać nowe połączenie publikowania.Jak dodawać pola do kolekcji Meteor.users

W server.js:

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

W client.js:

Meteor.subscribe("access_token"); 

Dobra, oto gdzie mogę zgubić. Czy token dostępowy powinien się teraz pojawić w kolekcji Meteor.users dla zalogowanego użytkownika? Podobno:

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

Oczywiście, próbowałem powyższego i accessToken nie pokazuje się. Tak, potwierdziłem, że dokument mongo zawiera services.facebook.

Więc ... czy mogę utworzyć nową kolekcję klientów i jakoś połączyć ją z nową publikacją? Jak zdobyć AccessToken?

Odpowiedz

9

należy użyć „pola” słowo kluczowe

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

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

+0

W rzeczywistości należy usunąć podwójny nawias, to powoduje błąd . Odpowiednią odpowiedzią, jeśli się nie mylę, jest: 'Meteor.users(). Find ({_id: this.userId}, {pola: {extra_fields: 1}} );' – Mercutionario

+1

masz rację. niewłaściwe pisanie ~~~ – crapthings

4

Możesz opublikować boiska chcesz:

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

To nie zawsze jest w porządku. Jeśli ujawniasz kolekcję użytkowników (wtyczkę użytkowników online), Meteor.users() znajdzie na przykład wszystkich użytkowników online z users.find. –

Powiązane problemy