2015-08-15 5 views
6

के बाद अपरिभाषित लौटा रहा है Thing क्या मैं यह जांचना चाहता हूं कि उपयोगकर्ता मेरे मार्गों में पहले से पहले कनेक्शन में Meteor.user() के माध्यम से लॉग इन है या नहीं। समस्या है, पृष्ठ लोड होने के बाद Meteor.user() लोड होने से पहले एक विभाजित दूसरे के लिए अपरिभाषित लौटाता है।Meteor.user() पृष्ठ रीलोड

यहाँ मेरी मार्ग config:

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

मैं एक बहुत और "waitOn" और साथ समाधान googled "लौट Meteor.user();" मेरे मामले में काम नहीं लग रहा है। भी दिलचस्प ... स्थानीय रूप से यह पूरी तरह से ठीक काम करता है, इसलिए मैं एक पेज रीलोड कर सकता हूं और अभी भी "सूची" दृश्य पर रह सकता हूं, लेकिन मॉड्यूलस पर तैनात ऐप पर वर्णित कार्य के रूप में कार्य करता है और लॉगिन पृष्ठ पर रीडायरेक्ट करता है।

कोई विचार? अग्रिम में धन्यवाद।

उत्तर

6

उपयोगकर्ता को लॉग इन किया गया है या नहीं, यह जांचने के लिए !!Meteor.userId() का उपयोग करना बेहतर है, क्योंकि उपयोगकर्ता डेटा को सर्वर से लोड करने की प्रतीक्षा करते समय कोई विलंबता नहीं है। । वास्तव में, Meteor.user दिनचर्या और अधिक या कम के बराबर है:

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

जो बताता है कि क्यों यह undefined वापस आ सकते हैं, भले ही उपयोगकर्ता के प्रवेश

+0

धन्यवाद, कि काम किया ... आसान ठीक :) –

+0

है 'if (meteor.userId()) 'और' if (!! meteor.userId())' के बीच कोई अंतर है? – Acute

संबंधित मुद्दे