2012-11-14 5 views
5

Ich habe eine Meteor.publish in meinem Code, der eine andere Funktion aufruft, die eine andere aufruft, und so weiter. Dann, in der innersten Funktion, muss ich wissen, was Benutzer der aktive ist.Zugriff auf Benutzer/userId innerhalb einer Funktion, die durch eine Veröffentlichung aufgerufen wird

Meteor.user() kann nicht verwendet werden. Es heißt

Meteor.userId kann nur in Methodenaufrufen aufgerufen werden. Verwenden Sie this.userId in Veröffentlichungsfunktionen.

und this.userId ist innerhalb der inneren Funktion nicht zugänglich.

Was kann dann getan werden?

+0

Meteor.publish (null, function() {self = this; doSomething() {self.userId}}); – crapthings

+0

die inneren Funktionen sind außerhalb der äußeren deklariert – zVictor

+2

Die exakt gleiche Frage könnte für this.userId in Methoden gefragt werden. Offensichtlich etwas, das in Meteor nicht optimal ist. – steph643

Antwort

4

Können Sie nicht einfach this.userId einer Variablen innerhalb der publish-Methode zuweisen und diese Variable dann übergeben?

Meteor.publish("my_channel", function() { 
    var userId = this.userId; 
    myFunction(userId); 
}); 
+4

Die Übergabe von userId, das * eine * globale Variable ist, als Parameter mehrerer verschachtelter Funktionsaufrufe ist schmerzhaft und fehleranfällig. Daher die ursprüngliche Frage. – steph643

0

Sie können es nennen wie diese Reflect.apply(Meteor.call, this, ['myFunctionName'])

Verwandte Themen