Meteor / Mongodb可观察集合被调用两次

时间:2016-10-06 17:43:21

标签: mongodb meteor

我正在使用Meteor / Mongo创建聊天应用。

我有以下代码,但我的问题是当我向MongoDb添加一行时,observe会被触发两次,而我只希望它一次。

addMessage函数被调用两次。有没有办法阻止某个addMessage多次调用message

在客户端:

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是有同样问题的人。

2 个答案:

答案 0 :(得分:0)

需要确保以下内容仅执行一次。即单身人士。

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

问题在于,正在创建观察者的许多实例,并且每个实例都在发射

答案 1 :(得分:-1)

Observe会两次调用,因为您要添加两次记录。 Meteor在更新数据库后看起来,你不需要调用服务器方法来执行插入