Python - сложный запрос в Google Firebase - PullRequest
0 голосов
/ 13 марта 2019

У меня есть база данных, которая показана ниже

enter image description here

Я хочу показать только full_names в порядке.Я хочу этот вывод:

Alan Turing
Alan Turing
Alan Turing
Alan Turing
Alan Turing

Я пытался с этим кодом ниже, но он показывает имена пользователей.

import firebase_admin
from firebase_admin import credentials
from firebase_admin import db

# Fetch the service account key JSON file contents
cred = credentials.Certificate('BLABLA.json')
# Initialize the app with a service account, granting admin privileges
firebase_admin.initialize_app(cred, {
    'databaseURL': 'https://BLABLA.firebaseio.com/'
})

ref = db.reference('users')
snapshot = ref.order_by_child('full_name').get()
for key in snapshot:
    print(key)

Вывод:

alanisawesom
alanisawesome
alanisawesomee
alanisawesomeee
alanisawesomeeee

Гдемоя вина?Вы можете это исправить?

РЕДАКТИРОВАТЬ: Мои правила в Firebase:

{
  "rules": {
    "users": {
      ".indexOn": ["date_of_birth", "full_name"]
    },
    ".read": "true",
    ".write": "true"
  }
}

1 Ответ

0 голосов
/ 13 марта 2019

Ваш запрос указывает базе данных возвращать узлы в users, упорядоченные по их свойству full_name. Но Firebase по-прежнему возвращает полные узлы, а не только свойство, которое вы указали для заказа.

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

ref = db.reference('users')
snapshot = ref.order_by_child('full_name').get()
for user in snapshot.each():
    print(user.child("full_name").val())

Я не Pythonista, поэтому я искал здесь справку по синтаксису: Как перебрать каждый дочерний элемент базы данных firebase с python?

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