我有一个简单的Firebase,我主要通过Javascript进行交互,效果非常好。但是,我还有一个Python程序,需要从现有子节点获取数据并将数据放入/更新现有子节点。我试过python-firebasin,它可以做我想要的,但它是不可靠的(挂起,失败等)。
所以我正在看python-firebase REST包装器。这似乎很有效,而且效果很好。但是,每当我尝试发布()数据时,我不仅会得到我发布的数据,而且会得到某种与之配对的独特字符串,所有这些都是作为孩子插入的。
例如,通过Javascript,我可能会说:
db = new Firebase('https://myfirebase.firebaseio.com/testval/');
db.transaction(function(current) { return 1; });
这会给我一个看起来像的Firebase:
|---testval: 1
但是当我尝试使用Python Firebase REST包装器执行类似操作时,例如:
db = firebase.FirebaseApplication('https://myfirebase.firebaseio.com/')
db.post('/testval/',1)
我的Firebase看起来像这样:
|---testval:
|---JI4BiBbICSEAnM9mDXf: 1
换句话说,它会插入一个新子项,为其提供一个新字符串,然后附加数据。是否有任何方法可以使用REST包装器在我的Firebase上插入/修改数据,这样就像我在使用Javascript一样干净利落地完成它?没有添加孩子,没有添加这些独特的字符串?
答案 0 :(得分:4)
请改为尝试:
db.put(1)
db.post()相当于JavaScript API中的.push(),因此它会为您创建一个唯一的ID。 db.put()等效于.set(),只会设置数据,这看起来就像你想要的那样。
请注意,REST API中没有等效事务,但您的示例只是使用事务来执行.set(),所以希望您实际上并不需要它们。
答案 1 :(得分:1)
试试这个:
5.1.1
put有三个参数:第一个是url或path,第二个是键名或快照名,第三个是数据(json)