Как запросить, существует ли массив значений в Firebase с Android? - PullRequest
0 голосов
/ 01 декабря 2019

У меня есть статический массив дат - String[] dates = new String[MAX_DAYS].

Каждая дата имеет формат yyyyMMdd, а массив отсортирован по алфавиту

(например, dates[0] = "20200102", dates[1] = "20200101", dates[2] = "20191231", dates[3] = "20191230" и т. Д.)

У меня также есть база данных (я использую базу данных Firebase), в которой хранятся даты (в указанном формате), например:

{   
  "key" : {
    "aaa" : "20191230",
    "bbb" : "20191231",
    "ccc" : "20191231",
    "ddd" : "20191231",
    "eee" : "20200101",
    "fff" : "20200101",
    "ggg" : "20200103"
    }
}

Я хочу проверить для каждого значения в массиве dates (минус первый индекс), появляется ли это значение хотя бы один раз в базе данных. (т. е. если все значения, но во-первых, dates существуют в базе данных, что-то делают, в противном случае делают что-то другое)

Я создал запрос, который выбирает только дочерние элементы в key, значение которых находится в диапазоне dates[1]и dates[dates.length - 1]:

// reference to "key" node
ref.orderByValue().startAt(dates[dates.length - 1]).endAt(dates[1])
                .addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        for(DataSnapshot ds : dataSnapshot.getChildren()) {

                        }
                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {}
                });

Какой самый эффективный способ выяснить, существуют ли все значения dates в базе данных? Я просто сохраняю значение каждого дочернего элемента в другом массиве и затем зацикливаю оба массива? Или есть лучший способ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...