【问题标题】:Meteor/Mongodb observable collection getting called twiceMeteor/Mongodb 可观察集合被调用两次
【发布时间】:2016-10-07 21:51:05
【问题描述】:

我正在使用 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 是有同样问题的人。

【问题讨论】:

    标签: mongodb meteor


    【解决方案1】:

    需要确保以下操作只执行一次。即单身。

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

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

    【讨论】:

      【解决方案2】:

      Observe 收到两次调用,因为您添加了两次记录。 Meteor 会在更新数据库后进行处理,您不需要调用服务器方法来进行插入

      【讨论】:

      • 问题是,Meteor 服务器只被调用一次,但 observable 的行为就像被添加了两次。
      • 我什至在cursor 上做了一个count,并且在第一次调用addMessage 时的值与第二次相同。
      猜你喜欢
      • 1970-01-01
      • 2015-04-03
      • 1970-01-01
      • 1970-01-01
      • 2018-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多