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

问题描述 投票:2回答:1

我正在使用带有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可以实现这些原子写入的任何想法?谢谢!

firebase google-app-engine firebase-realtime-database
1个回答
1
投票

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

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.