2017-01-01 3 views
3

Ich habe ein FireBase-Back-End, das einen Zeitstempel wie folgt hat ... es gibt viele dieser Knoten, die Objekte sind, die verschoben wurden.Abfrage von Firebase basierend auf ServerValue.TIMESTAMP

DB set up

jeder Knoten einen Zeitstempel mit ServerValue.TIMESTAMP eingestellt.

in Datenmodellklasse Einstellung Serverzeit

private HashMap<String, Object> timestampCreated; 

//set time stamp in constructor when new obj is created 
public DataModel(...){ 
// TIME STAMP 
    HashMap<String, Object> timestampCreatedObj = new HashMap<String, Object>(); 
    timestampCreatedObj.put("date", ServerValue.TIMESTAMP); 
    this.timestampCreated = timestampCreatedObj; 
} 

//getting timestamp 

    public HashMap<String, Object> getTimestampCreated(){ 
    return timestampCreated; 
} 

@Exclude 
public long getTimestampCreatedLong(){ 
    return (long)timestampCreated.get("date"); 
} 

Die vor allem arbeitet zum Einsetzen in DB in Ordnung und ich kann die Zeit abgerufen werden.

In einer anderen Klasse möchte ich eine Abfrage auf einem FirebaseListAdapter setzen Einstellung der Abfrage lässt sagen für die Anzeige von Elementen in den letzten 5 Tagen.

long daysInpast= new Date().getTime() - TimeUnit.MILLISECONDS.convert(5, TimeUnit.DAYS); 

Dann stelle ich Abfrage

 Query queryDays= mDatabaseQuery.child("timestampCreated").orderByChild("date").endAt(daysInpast); 

final FirebaseListAdapter<myData> adapterQuery = new FirebaseListAdapter<myData> 
       (getActivity(), myData.class, R.layout.list_item, queryDays) {//do stuff} 

Seine meine Abfrage ich bin nicht sicher, meine Liste leer zurückkehrt, wenn ich meine FirebaseListAdapter nur ohne den DB-Referenz meiner Liste vorbei Abfrage verwenden erfüllt wie erwartet. Ich vermute, wie die Daten angelegt sind? er Tatsache, dass meine Zeit tippen ist in einem Unterknoten ist das ein Problem?

Ich habe gerade

versucht mit
Query queryDays= mDatabaseQuery.orderByChild("date").endAt(daysInpast); 

auch, aber keine vail

jede Hilfe

geschätzt

Antwort

2

Sie benötigen eine Abfrage auf die Lage über die Kinder laufen, die Sie zurückgegeben werden sollen, die scheint die Wurzel Ihrer Datenbank zu sein (bitte posten Sie keine Bilder mit unscharfem Text, posten Sie das nächste JSON als Text).

Wenn in der Tat Sie die Ebene unter der Wurzel Ihrer Datenbank benötigen, können Sie für das Datum abfragen mit:

DatabaseReference root = FirebaseDatabase.getInstance().getReference(); 
Query query = root.orderByChild("timestampCreated/date").endAt(daysInPast); 
+0

danke, das ist, was ich brauche, arbeiten jetzt, Entschuldigungen zu Bild, werde nach JSON in der Zukunft. – RoRo88

Verwandte Themen