2016-01-16 21 views
5

Sono nuovo di Meteore quindi ho giocato in giro e ora sono bloccato con questo problema.findOne che lancia undefined anche se i dati sono lì

Sto usando React Router per provare a mostrare un tema basato sull'URL/(: userId). Se non ci sono userId inseriti nell'URL dovrebbe mostrare il tema dell'utente corrente e se non c'è un utente corrente dovrebbe mostrare un tema predefinito.

Funziona in modo casuale. A volte ho un tema corretto, a volte getta indefinito durante la lettura di themeColor anche se i dati sono lì. Posso vedere con console.log che ottiene sempre l'ID giusto, ma trova ancora One può lanciare indefinito. Succede specialmente quando cambio l'URL (/ xyz) e torno a quello predefinito (/).

Ho verificato con la console che userId è l'effettivo proprietario di themeColor e themeTextColor.

Sto usando React, React-router, autopublish. Ho rimosso insicuro.

getMeteorData() { 

    var currentViewedPageId = this.props.params.userId? this.props.params.userId:(Meteor.userId()?Meteor.userId():false); 
    console.log(currentViewedPageId); //Allways right 
    console.log(Personalization.findOne({owner: currentViewedPageId}).themeColor); //Sometimes undefined, sometimes not 
    if(currentViewedPageId) 
    { 

     return { 
     currentUser: Meteor.user(), 
     themeColor: Personalization.findOne({owner: currentViewedPageId}).themeColor, 
     themeTextColor: Personalization.findOne({owner: currentViewedPageId}).themeTextColor 
     }; 
    } 
    return { 
     currentUser: Meteor.user() 
    } 

}, 
+2

Dove ti sei abbonato a quei dati? Immagino che devi aspettare che l'abbonamento sia pronto. –

+0

Sto usando autopublish per ora. – hiei

+3

Autopublish pubblica semplicemente tutti i dati, ma non li sta aspettando. Rimuovi autopublish e usa publish/subscribe. La migliore opzione è il routing con opzioni di attesa e di sottoscrizione integrate come: [flow-router] (https://github.com/VeliovGroup/flow-router) o [iron-router] (https://github.com/iron -meteor/ferro-router) –

risposta

0

Poiché il codice funziona a volte. Possono esserci alcuni dati di test che non corrispondono allo schema. Quindi prova tutti i dati nella collezione.

Problemi correlati