当我用相同的值替换节点的值时,是否可以在监听器中获取事件?接触,如果firebase注意到值是相同的没有事件确认..:s
答案 0 :(得分:1)
因为没有任何事情发生,所以没有触发事件。您可以做的是在设置之前检查值。
if(myValue.equals(firebaseValue)) {
//do something
} else {
//do something else
}
希望它有所帮助。
答案 1 :(得分:1)
Firebase数据库在客户端之间同步状态。如果写操作没有改变状态,则没有任何东西可以与其他监听客户端同步。
简单的代码:
ref.setValue(1);
ref.setValue(1); // won't trigger listeners
ref.setValue(2); // will trigger active listeners
ref.setValue(2); // won't trigger listeners
听起来你想在客户端之间传递消息。这完全可行,但意味着您应该以不同方式对数据建模。不要将值存储在数据库中,而是存储客户端写入值的事实。
简单的代码:
ref.push(1);
ref.push(1);
ref.push(2);
ref.push(2);
在最后一个示例中,每次写入都会触发ref
上的侦听器,因为每次写入都是新的。
这是一种常见模式:您不是存储最终状态,而是存储状态更改。它基本上类似于数据库和许多其他系统中oplog背后的机制。