【发布时间】:2018-12-02 10:30:09
【问题描述】:
我有多个(大)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 内容?
部分答案:使用set 和merge,显示here 用于Firestore。但是如何使用 CLI 和 Firebase 做到这一点?
【问题讨论】:
-
您的两个文件都有一个公共节点
parent,并且在第二次调用后更新不会合并两个子节点。每次都会完全覆盖共同的父母。我认为您要么必须重写您的 JSON 以仅包含要添加的子级而无需公共父级,然后在命令行上使用父级名称。或者在脚本中编写一些代码来执行此操作。 -
@DougStevenson 啊,现在我明白了。因此,取出单个 JSON 中的
geofire键,然后将其添加回命令行/geofire/。我得测试一下……
标签: firebase firebase-realtime-database geofire firebase-cli