我有一个如下所示的数据库
我只想按顺序显示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"
}
}
答案 0 :(得分:0)
您的查询告诉数据库返回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,所以我在这里寻求语法方面的帮助:How to loop through each firebase database child with python?