我正在使用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是有同样问题的人。
答案 0 :(得分:0)
需要确保以下内容仅执行一次。即单身人士。
this.messages.observe({
added: (message) => this.addMessage(message)
});
问题在于,正在创建观察者的许多实例,并且每个实例都在发射
答案 1 :(得分:-1)
Observe会两次调用,因为您要添加两次记录。 Meteor在更新数据库后看起来,你不需要调用服务器方法来执行插入