2012-11-14 5 views
5

Kodumda Meteor.publish var, başka birini çağıran başka bir işlevi çağırır, vb. Daha sonra, en iç işlevde, kullanıcısının etkin olanı olduğunu bilmem gerekiyor.Kullanıcı/userId bir yayımla tarafından çağrılan bir işlev içinde erişim

Meteor.user() kullanılamaz.

Meteor.userId yalnızca yöntem çağrılarında çağrılabilir. Yayınlama işlevlerinde this.userId öğesini kullanın. İç fonksiyonun içinde

ve this.userId erişilemez.

O zaman ne yapılabilir?

+0

Meteor.publish gibi diyebilirsin (null, function() {öz = Bu; doSomething() {self.userId}}); – crapthings

+0

iç işlevler dışsal olanlar dışında bildirildi – zVictor

+2

Aynı soru, this.userId yöntemlerinde de sorulabilir. Açıkça Meteor'da optimal olmayan bir şey. – steph643

cevap

4

Yayınlama yöntemindeki bir değişkene this.userId atayamaz ve sonra bu değişkeni bu alandan geçiremez misiniz?

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

Birden çok iç içe geçmiş işlev çağrısının bir parametresi olarak * olan * bir global değişken olan geçen kullanıcı kimliği ağrılı ve hataya eğilimlidir. Bu yüzden orijinal soru. – steph643

0

Bu Reflect.apply(Meteor.call, this, ['myFunctionName'])