Firebase实时数据库REST API是否支持不同实体位置的多路径更新?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Firebase实时数据库REST API是否支持不同实体位置的多路径更新?相关的知识,希望对你有一定的参考价值。

我正在使用带有Java的AppEngine Standard项目的Firebase实时数据库的REST API。我能够成功地将数据放在不同的位置,但是我不知道如何确保对不同路径的原子更新。要将一些数据单独放在我正在做的特定位置:

requestFactory.buildPutRequest("dbUrl/path1/17/", new ByteArrayContent("application/json", json1.getBytes())).execute();

requestFactory.buildPutRequest("dbUrl/path2/1733455/", new ByteArrayContent("application/json", json2.getBytes())).execute();

现在要确保在保存/ path1 / 17 / a / path2 / 1733455 /时也保存了,我一直在研究多路径更新和批量更新(https://firebase.google.com/docs/firestore/manage-data/transactions#batched-writes,仅在Cloud Firestore中可用?)但是,我没有找到此功能是否也可用于Firebase实时数据库的REST API,或仅通过Firebase Admin SDK。

示例here显示了如何在“users”节点下的两个位置执行多路径更新。

curl -X PATCH -d '{
  "alanisawesome/nickname": "Alan The Machine",
  "gracehopper/nickname": "Amazing Grace"
}' 
  'https://docs-examples.firebaseio.com/rest/saving-data/users.json'

但是我没有path1和path2的公共上层节点。尝试将url设置为数据库url而没有任何节点(https://db.firebaseio.com.json)并添加发送的json对象中的节点,但是我收到错误:提供了nodename或servname,或者未知。

根据这篇博客文章:https://firebase.googleblog.com/2015/09/introducing-multi-location-updates-and_86.html,我认为这可以通过Admin SDK实现

如果使用REST API可以实现这些原子写入的任何想法?谢谢!

答案

如果更新将转到单个数据库,则始终存在共同路径。

在您的情况下,您将针对数据库的根运行PATCH命令:

curl -X PATCH -d '{
  "path1/17": json1,
  "path2/1733455": json2
}' 'https://yourdatabase.firebaseio.com/.json'

与您的网址的主要区别似乎是/之前的.json。如果没有这个,你就试图连接到json TLD上的域名,这个域名尚未存在(尚未)。

请注意,您为“批量更新”提供的文档链接适用于Cloud Firestore,它与Firebase实时数据库完全独立。

以上是关于Firebase实时数据库REST API是否支持不同实体位置的多路径更新?的主要内容,如果未能解决你的问题,请参考以下文章

Firebase Rest Api 从我的模型类中读取数据返回 null [重复]

如何通过 REST API 读取 Firebase 有序数据?

来自远程 REST API 的 Firebase 分析?

带有 Firebase Id 令牌的 Firestore REST API

是否可以通过 GraphQL/REST 后端共享 3rd 方 API websocket/实时连接?

使用邮件和密码通过 REST API [Firebase] 进行身份验证