2015-08-15 13 views
6

Il problema è che voglio verificare se l'utente è connesso tramite Meteor.user() all'interno di OnBeforeAction nei miei percorsi. Il problema è, dopo che una pagina si è ricaricata, Meteor.user() restituisce undefined per una frazione di secondo prima che venga caricato.Meteor.user() restituisce undefined dopo il caricamento della pagina

Ecco il mio percorso di configurazione:

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

I Googled molto e le soluzioni alternative con "waitOn" e "tornare Meteor.user();" non sembra funzionare nel mio caso. Interessante anche ... localmente funziona perfettamente, quindi posso ricaricare una pagina e rimanere nella vista "elenco", ma l'app Modulus implementata agisce come descritto sopra e reindirizza alla pagina di accesso.

Qualche idea? Grazie in anticipo.

risposta

6

È preferibile utilizzare !!Meteor.userId() per verificare se un utente ha effettuato l'accesso, perché non c'è latenza durante l'attesa che i dati dell'utente vengano caricati dal server. In realtà, Meteor.user routine è più o meno equivalente a:.

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

il che spiega il motivo per cui può restituire undefined anche se l'utente è connesso

+0

grazie, che hanno lavorato ... facile correzione :) –

+0

Is c'è qualche differenza tra 'if (Meteor.userId())' e 'if (!! Meteor.userId())'? – Acute

Problemi correlati