用相同的值替换节点时获取事件?

时间:2017-08-10 14:42:42

标签: android firebase firebase-realtime-database

当我用相同的值替换节点的值时,是否可以在监听器中获取事件?接触,如果firebase注意到值是相同的没有事件确认..:s

2 个答案:

答案 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背后的机制。