希望以下是一个非常简单的问题。当我使用Pyrebase的.get()方法得到一个项目时,如下所示:
unique(dt[,'Number_of_children'])
我得到以下输出,即使我使用 .val()
for company_id in game[company_type]:
pyre_company = db.child("companies/data").order_by_child("id").equal_to(company_id).limit_to_first(
1).get()
company = pyre_company.val()
print(company)
break # Run only once for testing purposes
但我只想要JSON对象
OrderedDict([('-LEw2zHYiJ6p15iBhKuZ', {'id': 427, 'name': 'Bugbear Entertainment', 'type': 'developer'})])
答案 0 :(得分:0)
这是因为
db.child("companies/data").order_by_child("id").equal_to(company_id).limit_to_first(1).get()
是Query,因为您在Reference(以及orderByChild()
方法btw)上调用equalTo()
方法。
正如JavaScript SDK doc中的解释here:
即使查询只有一个匹配项,快照仍然是一个 列表;它只包含一个项目。要访问该项目, 你需要循环结果:
ref.once('value', function(snapshot) { snapshot.forEach(function(childSnapshot) { var childKey = childSnapshot.key; var childData = childSnapshot.val(); // ... }); });
使用pyrebase,你应该使用each()
方法,如here所述,"返回一个对象列表,每个对象都可以调用val()
和{{1 }}"
key()