"通过REST API和Python向Firebase插入干净的数据的方法"

2024-04-25 07:56:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个简单的Firebase,主要是通过Javascript进行交互,它工作得非常好。但是,我还有一个Python程序,它需要从现有子级获取数据,并在现有子级上放置/更新数据。我试过python firebasin,它可以做我想做的事情,但它不可靠(挂起、失败等)。

所以我在看python firebase REST包装器。这看起来很有效,而且效果很好。但是,每次我尝试post()数据时,我得到的不仅仅是我要发布的数据,而是与之匹配的某种唯一字符串,都是作为一个孩子插入的。

例如,通过Javascript,我可以说:

db = new Firebase('https://myfirebase.firebaseio.com/testval/');
db.transaction(function(current) { return 1; });

这会给我一个火力基地,看起来像:

|---testval: 1

但是,当我尝试使用Python Firebase REST包装器执行类似的操作时,例如:

db = firebase.FirebaseApplication('https://myfirebase.firebaseio.com/')
db.post('/testval/',1)

我的火力基地是这样的:

|---testval:
   |---JI4BiBbICSEAnM9mDXf: 1

换句话说,它插入一个新的子对象,给它一个新字符串,然后追加数据。有没有任何方法可以使用REST包装器在我的Firebase上插入/修改数据,就像我使用Javascript一样干净?不添加子项,不添加这些唯一的字符串?


Tags: 数据字符串httpscomrestdbjavascriptpost
2条回答

试试这个:

db = firebase.FirebaseApplication('https://myfirebase.firebaseio.com/')
db.put('', 'testval', 1)

put有三个参数:第一个是url或路径,第二个是密钥名或快照名,第三个是数据(json)

请改为:

db.put(1)

db.post()相当于JavaScript API中的.push(),因此它为您创建了一个唯一的ID。db.put()等同于.set(),只需设置数据,这似乎是您想要的。

请注意,REST API中没有事务的等价项,但是您的示例只是使用事务来执行.set(),所以希望您实际上不需要它们。

相关问题 更多 >

    热门问题