2015-08-15 12 views
6

Thing, kullanıcının rotalarımda onBeforeAction içinde Meteor.user() aracılığıyla oturum açıp açmadığını kontrol etmek istiyorum. Sorun, sayfa yeniden yüklendikten sonra Meteor.user() yüklenmeden önce bölünmüş bir saniye için undefined değerini döndürür. İşteMeteor.user() sayfa yeniden yüklendikten sonra undefined değerini döndürür

benim rota yapılandırma:

Router.map(function() { 
    this.route('list', { 
     path: '/list', 
     template: 'list', 
     onBeforeAction: function(){ 
      console.log('onBeforeAction'); 
      if(!Meteor.user()){ 
       Router.go('/login'); 
      } 
      this.next(); 
     } 
    }); 
}); 

Ben çok ve "waitOn" ve geçici çözümler googled "Meteor.user() return;" Benim durumumda çalışmıyor gibi görünüyor. Ayrıca ilginç ... yerel olarak gayet iyi çalışıyor, bu yüzden bir sayfa yeniden yükleme yapabilirim ve hala "liste" görünümünde kalabilirim, ancak Modulus konuşlandırılmış uygulamasında yukarıda açıklandığı gibi hareket eder ve giriş sayfasına yönlendirir.

Herhangi bir fikrin var mı? Şimdiden teşekkürler.

cevap

6

!!Meteor.userId(), bir kullanıcının oturum açıp açmadığını kontrol etmek için daha iyidir, çünkü kullanıcı verilerinin sunucudan yüklenmesini beklerken gecikme yoktur. . Aslında, Meteor.user rutin az ya da çok denk şudur: kullanıcı giriş bile o undefined döndürebilir açıklıyor

function() { 
    return Meteor.users.findOne({ _id: Meteor.userId() }); 
} 

çalıştı

+0

sayesinde, ... kolay düzeltme :) –

+0

mi if (Meteor.userId()) 've' if (!! Meteor.userId()) 'arasında herhangi bir fark var mı? – Acute

İlgili konular