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()
}
},
Dove ti sei abbonato a quei dati? Immagino che devi aspettare che l'abbonamento sia pronto. –
Sto usando autopublish per ora. – hiei
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) –