Firebase RTDB:使用CLI中的旧数据更新/合并新数据

时间:2018-06-22 23:04:08

标签: firebase firebase-realtime-database geofire firebase-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文件合并到同一节点?


部分答案:将here中的setmerge一起用于Fire store 。但是,如何使用CLI和Fire base 做到这一点?

1 个答案:

答案 0 :(得分:2)

基于Doug的评论,

通过从JSON中删除顶级父节点,然后将其添加到parent命令中,我可以分多个步骤将单个密钥添加到firebase-import节点,而不会覆盖现有子节点

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

$ 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}