我有一个带有列表的小型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()
...
有什么想法吗?
答案 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() {
...
});