2017-01-01 10 views
3

У меня есть задняя часть FireBase, у которой есть отметка времени, например ... есть многие из этих узлов, которые были нажаты.Запрос Firebase на основе ServerValue.TIMESTAMP

DB set up

каждый узел имеет временную метку набор с ServerValue.TIMESTAMP.

в модели данных настройки времени сервера класса

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"); 
} 

Приведенный выше все работает отлично для вставки в БД, и я может получить время.

в другом классе Я хочу задать запрос в FirebaseListAdapter , который задает запрос для отображения элементов за последние 5 дней.

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

Тогда я настроить запрос

 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} 

Его мой запрос я не уверен, мой список возвращается пустым, если я просто использовать мой FirebaseListAdapter без запроса прохождения референтной DB моего списка заполняется, как ожидалось. Я подозреваю, как его данные выкладываются? он факт, что мой временный контакт находится в подзоне, является проблемой?

Я пробовал только с помощью

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

также, но не VAIL

любая помощь оценили

ответ

2

Вам нужно выполнить запрос на месте над детьми, которые вы хотите возвращенного, который выглядит как корень вашей базы данных (пожалуйста, не публикуйте фотографии с размытым текстом, в следующий раз опубликуйте JSON как текст).

Если на самом деле вам нужен уровень под корнем вашей базы данных, вы можете запросить дату с:

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

спасибо, это то, что мне нужно, работая сейчас, Извинение около изображения, разместит JSON в будущем. – RoRo88