2016-07-28 1 views
1

私は角の流星でウェブサイトを開発していますが、私は奇妙な問題に直面しました。私がチャットブロックを持っているすべてのページで、メッセージはコレクションchatMessagesに保存され、正しく表示されます。問題は、現在のユーザー(mongoドキュメントの手動編集または流星のメソッド内での更新)を編集するたびに、私のアプリがすべてのサブスクリプションを削除することです。その結果、チャットからメッセージがディスパッパされます。しかし、チャットメッセージは消えるだけではありません。私はthis piece of codeを使って問題の原因を理解しましたが、ほとんど理解できません。ここでは、ブラウザコンソールの出力から最も興味深い部分があります:現在のユーザーを更新するたびに、すべてのコレクションがフラッシュされます(実際にはありません)。

// On page load 
send Object { 
    msg: "sub", 
    id: "EPgQwMiDggM7wafCN", 
    name: "chatMessages", 
    params: Array[0] 
} 
receive Object { 
    msg: "added", 
    collection: "chatMessages", 
    id: "G6tv76ZSJYXmnsrAY", 
    fields: Object 
} 

// Calling 'createArenaRoom' method 
send Object { 
    msg: "method", 
    method: "createArenaRoom", 
    params: Array[1], 
    id: "8", 
    randomSeed: "516b5128615f1c7849f2" 
} 

// User updated 
receive Object { 
    msg: "changed", 
    collection: "users", 
    id: "sQnaLPj2FvH692rQM", 
    fields: Object 
} 

// ??? WHY ???? 
send Object { 
    msg: "unsub", 
    id: "EPgQwMiDggM7wafCN" 
} 
receive Object { 
    msg: "removed", 
    collection: "chatMessages", 
    id: "G6tv76ZSJYXmnsrAY" 
} 
receive Object { 
    msg: "nosub", 
    id: "EPgQwMiDggM7wafCN" 
} 

ところで、データはmongoから削除されません。ページを更新すると、メッセージがチャットされ、他のすべてが再び表示されます。

ご協力いただければ幸いです。

+0

コードを見る方が簡単です。 – vijayst

答えて

0

最後に、私は問題の原因を発見しました。これは、現在のユーザーのデータが使用可能になる前に、コンポーネントのコードの実行を防ぐために作られた

<div ng-if="$root.loggingIn" class="loading-screen"></div> 
<myapp ng-if="!$root.loggingIn"></myapp> 

:私のmain.htmlとでは、私はこのような何かを持っていました。私はをmyappから削除し、問題は消えました。私はなぜそれがそのような奇妙な行動を引き起こしたのかしか推測できません。今私は、ユーザーデータを待つためにコンポーネントでthis.autorun()を使用します。

関連する問題