Firebase:如何强制为一个特定节点检索新数据。
Firebase : How to force retrieval of new data for one particular node.
我启用了setPersistenceEnabled(true)
,然后错误地发生了一些事情,一个应该有children的节点现在没有了;
节点的格式为:
Nodes : {
concernedNode : {
child : "data",
child2 : "data"
}
}
错误后,关注节点 更改为:
concernedNode : true
在 java 中,我得到的数据如下:
concernedNodePojo pojo = dataSnapshot.getValue(concernedNodePojo.class);
如您所见,如果 concernedNode 现在是布尔值,则会引发异常,其中 concernedNodePojo 无法转换为布尔值。
现在的问题是这已经在缓存中了,如果setPersistenceEnabled(false)
,一切都会正常,但是如果setPersistenceEnabled(true)
,应用程序崩溃,因为没有办法删除离线数据。
我尝试了setPersistenceEnabled(false)
,然后检索新数据,以便可以覆盖离线数据,但事实并非如此。离线数据被检查并且应用程序崩溃了。
最简单的方法是手动删除应用数据或重新安装应用。
以编程方式,您最好的选择是保持持久性启用并检索数据而不将其解析到您的 POJO 中。只需附加一个在其 onDataChange()
中不执行任何操作的侦听器,或者,如果您想查看它是否有新数据,请解析快照而不将其转换为 concernedNodePojo
。
例如:
public void onDataChange(DataSnapshot snapshot) {
System.out.println("Got "+snapshot.getKey());
System.out.println("Got "+snapshot.child("child").getValue());
}
我启用了setPersistenceEnabled(true)
,然后错误地发生了一些事情,一个应该有children的节点现在没有了;
节点的格式为:
Nodes : {
concernedNode : {
child : "data",
child2 : "data"
}
}
错误后,关注节点 更改为:
concernedNode : true
在 java 中,我得到的数据如下:
concernedNodePojo pojo = dataSnapshot.getValue(concernedNodePojo.class);
如您所见,如果 concernedNode 现在是布尔值,则会引发异常,其中 concernedNodePojo 无法转换为布尔值。
现在的问题是这已经在缓存中了,如果setPersistenceEnabled(false)
,一切都会正常,但是如果setPersistenceEnabled(true)
,应用程序崩溃,因为没有办法删除离线数据。
我尝试了setPersistenceEnabled(false)
,然后检索新数据,以便可以覆盖离线数据,但事实并非如此。离线数据被检查并且应用程序崩溃了。
最简单的方法是手动删除应用数据或重新安装应用。
以编程方式,您最好的选择是保持持久性启用并检索数据而不将其解析到您的 POJO 中。只需附加一个在其 onDataChange()
中不执行任何操作的侦听器,或者,如果您想查看它是否有新数据,请解析快照而不将其转换为 concernedNodePojo
。
例如:
public void onDataChange(DataSnapshot snapshot) {
System.out.println("Got "+snapshot.getKey());
System.out.println("Got "+snapshot.child("child").getValue());
}