Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Meteor/Mongodb可观测集合被调用两次_Mongodb_Meteor - Fatal编程技术网

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

Meteor/Mongodb可观测集合被调用两次,mongodb,meteor,Mongodb,Meteor,我正在使用Meteor/Mongo创建聊天应用程序 我有以下代码,但我的问题是当我向MongoDb添加一行时,observe会被触发两次,而我只希望它触发一次 addMessage函数被调用两次。有没有办法防止对特定的消息多次调用addMessage 在客户机上: private messages: Mongo.Cursor<Message>; sendMessage(): void { this.messages.observe({ added: (m

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

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

addMessage
函数被调用两次。有没有办法防止对特定的
消息
多次调用
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);    
}

是具有相同问题的人。

观察者会收到两次呼叫,因为您要添加两次记录。Meteor负责更新数据库,您不需要调用服务器方法来执行插入操作。您需要确保以下操作只执行一次。i、 e.辛格尔顿

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

问题是,观测者的许多实例都在创建中,而且每个实例都在燃烧

问题是,Meteor服务器只被调用一次,但可观察对象的行为就像它被添加了两次。我甚至在
光标上做了
计数
,第一次调用
addMessage
时的值与第二次调用时的值相同。
  this.messages.observe({
    added: (message) => this.addMessage(message)
  });