Firebase无法获取最后一个插入值

时间:2016-07-03 08:19:10

标签: android firebase firebase-realtime-database

我有一个带有列表的小型firebase数据库。如何获取列表的最后插入值? 列表的元素具有日期字符串作为关键字,例如:

 2016_05_29 --> data
 2016_05_30 --> data
 2016_05_31
 2016_06_01
 2016_06_02
 2016_06_03
 2016_06_10
 2016_06_11
 2016_06_12
 2016_06_13
 2016_06_14
 2016_06_15
 2016_06_16
 2016_06_17
 2016_06_18
 2016_06_19 //returned value
 2016_06_20
 2016_06_21
 2016_06_22
 2016_06_23 //expected value

我尝试获取此列表的最后一个值,所以2016_06_23但由于某种原因它会返回2016_06_19我使用的任何键/订单系统:

Query dateMaxRef = ref.orderByKey().limitToLast(1); //this returns always 2016_06_19 instead of 2016_06_23 
dateMaxRef.addListenerForSingleValueEvent(new ValueEventListener() 

...

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

我遇到了同样的问题,对我来说原因是因为查询没有使用来自firebase的最新数据,而是依赖于内部缓存。在查询上使用.keepSynced(true)为我修复了它。以下是示例代码 -

Query causeListPath = mFirebase.child(PATH_CAUSE_LIST).child(SELECTED_CITY)
        .child(SELECTED_COURT_CODE).limitToLast(1);

// If user wants un-cached data, force sync
if (!useCache) causeListPath.keepSynced(true);

causeListPath.addChildEventListener(new ChildEventListener() {
...
});