Nano Hash - криптовалюты, майнинг, программирование

Вложенное значение Firebase

Я пытаюсь запросить элементы в моей базе данных firebase на основе значения атрибута.

Вот моя структура:

введите здесь описание изображения

Вот мой объект POJO:

public class LapTime {

    private int vehicleType;
    private String track;
    private String user;
    private int time;
}

И вот мой код запроса:

mDatabase.child("lap-time").orderByChild("track").equalTo(mTrackUuid).addValueEventListener(new ValueEventListener() {
    @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            time = dataSnapshot.getValue(LapTime.class).getTime() + "ms");
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

Моя проблема в том, что снимок данных, который я получаю, имеет для root lap-time, а не для UUID, поэтому getValue(LapTime.class) дает мне пустой объект...

Вот снимок данных, который я получаю:

DataSnapshot { key = lap-time, value = {-KXwSxD0GYVC6awV8abw={track=-KXwSxCeV2Ib4Gt4pvjy, time=105000, vehicle-type=0, user=ZQKwPfRF0mVL5jAO7FaSPcsF7t42}} }

И вот что я хотел бы получить:

DataSnapshot { key = -KXwSxD0GYVC6awV8abw, value ={track=-KXwSxCeV2Ib4Gt4pvjy, time=105000, vehicle-type=0, user=ZQKwPfRF0mVL5jAO7FaSPcsF7t42}} }

Как я могу это сделать?


  • может быть аналогичной проблеме с stackoverflow.com/questions/40928787/ 02.12.2016
  • Вы хотите разобрать всех детей времени круга или конкретного? Вы можете перебирать дочерние элементы с помощью dataSnapshot.getChildren(). В противном случае вам нужно установить ValueEventListener на узле с UID 02.12.2016

Ответы:


1

Поскольку ваш код запроса может фактически иметь более одного результата, вы должны вызывать dataSnapshot.getChildren() и повторять дочерние элементы, чтобы получить результат, который вы ищете. В частности, mDatabase.child("lap-time").orderByChild("track").equalTo(mTrackUuid) — это запрос, который может иметь несколько результатов, поскольку может возникнуть ситуация, когда несколько объектов LapTime могут иметь дорожку, указывающую на один и тот же mTrackUuid. Теперь, чтобы получить результат опубликованного вами журнала, вам нужно построить запрос следующим образом: mDatabase.child("lap-time").child("-KXwSxD0GYVC6awV8abw"). Обратите внимание, что запросы orderByChild/equalTo исчезли, так как они приводят к условному запросу, который может возвращать список данных вместо единственного значения.

02.12.2016
  • Что мне делать, если я не знаю UID -KXwSxD0GYVC6awV8abw? Они генерируются автоматически, и я не отслеживаю их. 03.12.2016
  • Хорошо, заработало, перебирая детей! 03.12.2016
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..