2016-10-06 9 views
0

私はMeteor/Mongoを使ってチャットアプリを作成しています。メテオ/モンゴブ観察可能なコレクションが2回呼び出されました

私は次のコードを持っていますが、私の問題はMongoDbに行を追加したときに、observeが2回トリガされるということです。

addMessage関数が2回呼び出されます。あるmessageのためにaddMessageが複数回呼び出されるのを防ぐ方法はありますか?クライアントで

private messages: Mongo.Cursor<Message>; 

sendMessage(): void { 
     this.messages.observe({ 
     added: (message) => this.addMessage(message) 
     });  
     this.call('addMessage', this.senderId, this.activeChat._id, this.messageString);  
} 

サーバーの場合:

addMessage(senderId: string, chatId: string, content: string): void { 
    Messages.insert({ 
     chatId: chatId, 
     senderId: senderId, 
     content: content, 
     readByReceiver: false, 
     createdAt: new Date() 
    }); 
    }, 

Hereは、同じ問題を持つ人です。

答えて

-1

Observeは、レコードを2回追加しているため、呼び出しを2回受け取ります。メテオは、DBを更新した後、挿入を行うためにサーバメソッドを呼び出す必要はありません

+0

問題は流星Serverは一度だけ呼び出されるということですが、それが追加されるように観察が動作しているfireingました二度。 – Richard

+0

私は 'cursor'でも' count'を行い、値は 'addMessage'の最初の呼び出しでも同じです。 – Richard

0

以下は一度だけ実行する必要があります。すなわちシングルトン。

this.messages.observe({ 
    added: (message) => this.addMessage(message) 
    }); 

問題が作成されていた観察者の多くの事例よりだった、とそれぞれが

関連する問題