Firebase RTDB:updating/merging 新数据,旧数据来自 CLI

Firebase RTDB: updating/merging new with old data from CLI

我有多个(大)JSON 文件要添加到 Firebase 实时数据库 (RTBD)。我正在使用 Geofire,因此所有子节点都需要位于同一父节点下。我正在存储静态地理数据,但我想定期刷新它。如果我不能分段刷新它,那么始终保证我正在更新的一大 JSON 始终 100% 完成就会变得有问题。

我想要的数据结构是这样的:

{"parent" : {"child_a" : 1, "child_b" : 2}

我的第一个 JSON 看起来像这样

$ cat 1.json
{"parent": {"child_a" : 1 }}

我的第二个也是这样

$ cat 2.json
{"parent": {"child_b" : 2 }}

我试过使用 firebase-import--merge 标志:

$ firebase-import --database_url https://my_db.firebaseio.com/ --path / --json 2.json --service_account auth.json --merge

并且还尝试使用 firebase-tools 和更新标志:

$ firebase database:update / 2.json

但两者都从数据库中删除 1.json 的内容,并给我这个

{"parent": {"child_b" : 2 }}

如何将多个 JSON 文件合并到同一个节点中,而不覆盖以前的 JSON 内容?


部分答案:使用 setmerge,显示 用于 Firestore。但是我如何使用 CLI 和 Firebase 做到这一点?

根据 Doug

的评论

我可以通过从我的 JSON 中删除顶级父节点,然后将其添加到firebase-import 命令。

因此从问题中的示例来看,JSON 文件中没有 parent 节点,并且导入语句的 --path 标志中也没有 parent 节点

$ cat 1.json
{"child_a" : 1 }

$ firebase-import --database_url https://my_db.firebaseio.com/ --path /parent --json 1.json --service_account auth.json --merge

$ cat 2.json
{"child_b" : 2 }

$ firebase-import --database_url https://my_db.firebaseio.com/ --path /parent --json 2.json --service_account auth.json --merge

按我需要的方式提供数据:

{"parent" : {"child_a" : 1, "child_b" : 2}