2016-07-03 17 views
2

私はリスト付きの小さなfirebaseデータベースを持っています。リストの最後に挿入された値を取得するにはどうすればよいですか?リストの 要素は、キー日付文字列、例としてしている:私は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

Firebaseでの私の経験と違って聞こえます。 jsfiddleまたはjsbinの問題全体を再現することができますか? –

+0

@FrankvanPuffelenいいえ私は間違っています、100の値だけで70のレコードはありませんが、limitToLastは実際の最後のレコードを取得しません。私は命令が何かを理解していない... – albanx

+0

私はまったく同じ問題があります。これを解決する方法を理解できますか? – Tushar

答えて

3

私は同じ問題を抱えていました。その理由は、クエリが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() { 
... 
}); 
+0

ありがとうございました。これについてのドキュメントは見つかりませんでした。 – albanx

関連する問題