2016-01-16 11 views
5

私はMeteorを初めて使用しているので、私はこの問題を抱えています。データがあるにも関わらずfindOneが未定義である場合

私はReact Routerを使用してURL /(:userId)に基づいてテーマを表示しようとしています。 URLにuserIdが挿入されていない場合は、現在のユーザーのテーマが表示されます。現在のユーザーがいない場合は、デフォルトのテーマが表示されます。

ランダムに動作しています。ときどき私は正しいテーマを取得することがありますが、データが存在してもthemeColorを読み込むときに未定義がスローされることがあります。私はconsole.logを見ると常に正しいIdを得ることができますが、それでもfindOneは定義されていないことがあります。 URL(/ xyz)を変更してデフォルトのもの(/)に戻ったときに特に発生します。

私は、userIdがthemeColorとthemeTextColorの実際の所有者であることをコンソールで確認しました。

私はReact、React-router、autopublishを使用しています。私は不安を取り除いた。

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

あなたはそのデータをどこに購読していますか?私はあなたが購読が準備ができるまで待つ必要があると思います。 –

+0

私は現在autopublishを使用しています。 – hiei

+3

自動的にすべてのデータを公開しますが、待機しません。自動公開を削除し、publish/subscribeを使用します。最適なオプションは、[flow-router](https://github.com/VeliovGroup/flow-router)や[iron-router](https://github.com/iron)のようなビルドイン待機とサブスクリプションオプションを使用したルーティングです。 -meteor/iron-router) –

答えて

0

コードはいつか動作しています。スキーマと一致しないテストデータが存在する可能性があります。コレクション内のすべてのデータをテストします。

関連する問題