sql >> Databasteknik >  >> NoSQL >> MongoDB

Meteor - Varför ska jag använda this.userId över Meteor.userId() när det är möjligt?

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.

  1. På servern, inom en publiceringsfunktion, anropar antingen Meteor.userId() eller Meteor.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() än this.userId eftersom du inte kan använda this.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ända this.userId på klienten.

  2. På klienten, Meteor.userId() och Meteor.user() kommer inte att skicka fel och this.userId kommer inte att fungera. Anrop till Meteor.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 av Meteor.user() kan vara ofullständig (särskilt om autopublicerar paketet är inte installerat).


  1. TypeError:db.collection är inte en funktion, KAN INTE GET

  2. Mongoose uppdaterar inte mitt dokument om jag inte har någon återuppringningsfunktion

  3. MongoDB + nodejs :hur frågar man ISODate-fält?

  4. MongoDB filtrerar endast efter array-egenskap om den finns