【问题标题】:Deleting last node from Firebase Realtime Database via REST API通过 REST API 从 Firebase 实时数据库中删除最后一个节点
【发布时间】:2020-05-29 12:49:47
【问题描述】:

我的 Firebase 实时数据库如下所示:

我想从中删除最后一个节点-M8VOQO11nYo8iMC6NZ_。 在 Firebase REST API 的官方文档中,删除它的 CURL 代码是curl -X DELETE \ 'https://[PROJECT_ID].firebaseio.com/Texter.json' ,但它会删除整个分支。有没有办法只删除最后一个节点?

【问题讨论】:

    标签: firebase firebase-realtime-database


    【解决方案1】:

    只有知道节点的完整路径,才能写入/删除节点。所以要删除最后一个子节点,需要分两步:

    1. 使用query in a GET call 确定最后一个子节点的键
    2. 使用DELETE 调用然后删除该路径。

    查询看起来像:

    https://[PROJECT_ID].firebaseio.com/Texter.json?orderBy="$key"&limitToLast=1
    

    【讨论】:

    • 感谢@frank-van-puffelen,但它没有用。在 Python3 中 requests.delete('https://[PROJECT_ID].firebaseio.com/Texter.json?orderBy="$key"&limitToLast=1') 给出 <Response [400]> 错误。
    • 你需要两个做一个多步骤的过程:1)使用 GET 调用来执行查询以确定最后一个节点的键,2)循环结果,3)为每个键调用DELETE(这里只有一个,但你仍然需要循环)。您正在尝试将所有步骤合并到一个调用中,这不起作用,因为 Firebase 不支持更新/删除查询。
    【解决方案2】:

    我找到了这个解决方案:

    获取最后一个节点的端点

    url = https://[PROJECT_ID].firebaseio.com/Texter.json?orderBy="$key"&limitToLast=1
    

    获取响应

    response= requests.get(url)
    

    从响应中提取最后一个节点索引

    last_node = list(response.json().keys())[0]
    

    删除该节点的端点

    del_url = f'https://[PROJECT_ID].firebaseio.com/Texter/{last_node}.json' 
    

    使用端点中的该节点索引调用删除

    del_res = requests.delete(del_url)
    

    【讨论】:

      猜你喜欢
      • 2018-11-24
      • 1970-01-01
      • 1970-01-01
      • 2018-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多