Din fråga verkar blanda ihop Meteor.userId()
och Meteor.user()
. Brödtexten i frågan verkar fråga om det förra medan ämnesraden frågar om det senare. Jag ska försöka ta upp båda.
- På servern, inom en publiceringsfunktion, anropar antingen
Meteor.userId()
ellerMeteor.user()
kommer livedata_server. kör din metodimplementering med användarens ID (och lite annan information) lagras i en viss på fibern.Meteor.userId()
hämtar bara ID från kortplatsen på den aktuella fibern. Det borde gå snabbt.Det är generellt sett enklare att omstrukturera kod som använder
Meteor.userId()
änthis.userId
eftersom du inte kan användathis.userId
utanför metodtexten (t.ex.denna
kommer inte att ha en "userId"-egenskap i en funktion som du anropar från metodtexten) och du kan inte användathis.userId
på klienten. - På klienten,
Meteor.userId()
ochMeteor.user()
kommer inte att skicka fel ochthis.userId
kommer inte att fungera. Anrop tillMeteor.user()
är users.findOne(Meteor.userId()) , men eftersom detta motsvarar en mini-mongo DB-fråga kommer prestanda förmodligen inte att vara ett problem. Men av säkerhetsskäl returnerades objektet avMeteor.user()
kan vara ofullständig (särskilt omautopublicerar
paketet är inte installerat).