如何在pyrebase中获取单个项目?

时间:2018-06-17 03:30:25

标签: python firebase firebase-realtime-database

希望以下是一个非常简单的问题。当我使用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'})])

1 个答案:

答案 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()