在我的应用中,我有两个不同的活动,一个将数据(“建议”)存储到Firebase数据库:
DatabaseReference suggestRef = FirebaseDatabase.getInstance().getReference().child("suggestion").child(someID).push().child("name");
suggestRef.setValue(suggestion);
以及第二项活动,其中加载并显示其中一项建议供主持人接受或删除:
DatabaseReference suggestRef = FirebaseDatabase.getInstance().getReference().child("suggestion");
Query suggestQuery = suggestRef.limitToFirst(1);
suggestQuery.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//...
}
请注意,从数据库读取时,我正在访问我写入的父位置。这是因为“someID”可以是任何东西 - 因为可以为“someID”的任何值添加多个建议,我在那里通过push()添加随机子节点。这不是问题,我在onDataChange()回调中获取引用节点的子节点。
无论如何,写作肯定有效(通过数据库的Web视图进行检查),再次访问节点也是如此 - 只要我不为数据库设置setPersistenceEnabled()。 / p>
如果我这样做,写作仍然有效,但随后阅读会在引用的位置返回一个空值。
在没有持久性的情况下再次运行应用程序会使数据可用 - 稍后使用持久性运行会使其再次无法使用。
我做错了什么?