firebase - запросить внутренний объект - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть следующие данные в базе данных:

"posts": {
  "ts-functions": {
    "metrics": {
      "views" : 100,
      "likes" : 251000,
      "shares": 1200,
    },
    "title" : "Why you should use TypeScript for writing Cloud Functions",
    "author": "Doug",
  },
  "android-arch-3": {
    "metrics": {
      "views" : 100,
      "likes" : 117000,
      "shares": 144,
    },
    "title" : "Using Android Architecture Components with Firebase Realtime Database (Part 3)",
    "author": "Doug",
  }
},

Можно ли сделать запрос, подобный этому?

mDatabase.child("posts").child(ANYTHING).child("metrics").equalTo(100).addValueEventListener;

Я хотел бы получить только объекты метрик.

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

В дополнение к ответу @ Doug я хотел бы сохранить класс со всеми DatabaseReference в качестве констант с параметрами.

Таким образом, мне не нужно создавать ссылку внутри Activity это довольно очевидно.

private static DatabaseReference root = FirebaseDatabase.getInstance().getReference();

public static DatabaseReference post(String titleKey) {
       return root.child(titleKey);
}

public static DatabaseReference metrics(String titleKey) {
       return post(titleKey).child("metrics");
}
0 голосов
/ 12 сентября 2018

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

К сожалению, в запросах к базе данных реального времени нет подстановочных знаков. Ваш запрос должен начинаться в полностью указанном месте в базе данных.

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

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