Po zalogowaniu użytkownika przy użyciu Meteor.loginWithPassword()
lub utworzenia nowego z Accounts.createUser
(po stronie klienta), mogę potwierdzić w ich wywołaniach, że Meteor.user()
rzeczywiście zawiera wszystkie właściwości zestawu rekordów.Meteor.user() zwraca tylko swój _id
{ _id: "XXX",
profile: {
name: "Joe Shmoe",
thumbnail: "http://www.YYY.com/ZZZ.jpg"
},
username: "joeshmoe" }
Ponadto, zgodnie z the official docs,
domyślnie bieżącego użytkownika nazwa użytkownika, e-maile i profil są publikowane do klienta.
Tak, czy ktokolwiek będzie w stanie powiedzieć, dlaczego przy próbie dostępu do tych pól w moim Szablony thusly
Template.login.user_name = function() {
return (Meteor.userId() ? Meteor.user().profile.name : '')
};
to nie tylko ze względu na Meteor.user()
powrocie {_id: "XXX"}
z żadnym z jego rzeczywistych właściwości? To znaczy. użytkownik jest zdecydowanie zalogowany, ale obiekt użytkownika nagle stracił/ukrywa wszystkie swoje właściwości.
Ktoś wie, jaki może być problem?
Wielkie dzięki.
EDYCJA:tak się dzieje z Meteor 0.5.4, najnowszą wersją w tym czasie pisania. Przyjęta odpowiedź rzeczywiście rozwiązuje problem; czasami Meteor.userId()
jest już ważny, zanim reszta obiektu przybyła z serwera. Dziękuję wszystkim.
Próbowałem nawet opublikować je na serwerze i automatycznie zapisać je na kliencie, ale bez zmian. Nie powinienem jednak tego robić. '// Serwer Meteor.publish (" userData ", function() { return Meteor.users.find ({_ id: this.userId}, {pola: {profil: 1, nazwa użytkownika: 1}}); }); ... // Client Meteor.autosubscribe (function() { Meteor.subscribe ("userData"); }); ' – cneuro
Następnie umieścić całą wezwanie do metody pochłaniacza do Meteor.methods, podejrzewając kontekst Szablony, aby uniemożliwić niektórym użytkownikom dostęp do bazy danych dla bezpieczeństwa, ale jest to dokładnie ten sam problem. '// klienta Meteor.methods (. { Użytkownik: funkcję() { powrotu Meteor.user() profile.name; }); ... Template.login.user_name = function() { return (Meteor.userId()? Meteor.call ("userName"): '') }; ' – cneuro
Jaką wersję Meteor? –