当前位置: 首页 > 知识库问答 >
问题:

Firebase RTDB:更新/合并来自CLI的新数据和旧数据

太叔豪
2023-03-14

我有多个(大)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导入与合并标志一起使用:

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

并且还尝试使用带有更新标志的fire base-tools

$ firebase database:update / 2.json

但两者都在删除1的内容。来自DB的json,给我这个

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

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

部分回答:将设置与合并一起使用,此处显示的是Firestore。但我如何使用CLI和Firebase做到这一点?

共有1个答案

慕容弘懿
2023-03-14

根据Doug的评论,

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

因此,从问题中的示例来看,JSON文件中没有父节点,import语句的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}
 类似资料:
  • 问题内容: 我有两个Spark数据框: 数据框A: 和数据框B: 数据框B可以包含来自数据框A的重复行,更新行和新行。我想在spark中编写操作,在其中可以创建一个新数据框,其中包含数据框A的行以及数据框B的更新行和新行。 我首先创建一个仅包含不可更新列的哈希列。这是唯一的ID。所以我们可以说,并可以改变值(可更新),但是是唯一的。我创建了一个哈希函数为: 现在,我想编写一些火花代码,基本上从B中

  • 概述 使用update()方法更新文档。这个方法接收以下参数: 一个方档匹配的过滤器,用于过滤要更新的文档 一个用来执行修改操作的更新文档 一个可选的参数 指定过滤器和指定查询的时候是一样的。update()方法默认只更新单个文档,使用multi可选参数指定更新所有匹配的文档。 不能更新文档的_id字段。 更新指定字段 要改变某个字段的值,MongoDB提供了更新操作,比如$set用来修改值。如果

  • 更新数据使用Update方法,Update方法的第一个参数为需要更新的内容,可以为一个结构体指针或者一个Map[string]interface{}类型。当传入的为结构体指针时,只有非空和0的field才会被作为更新的字段。当传入的为Map类型时,key为数据库Column的名字,value为要更新的内容。 Update方法将返回两个参数,第一个为 更新的记录数,需要注意的是 SQLITE 数据库

  • 查找并更新 在取出数据后,更改字段内容后更新数据。 $user = UserModel::get(1); $user->user_nickname = '老猫'; $user->user_email = 'genmaowan@163.com'; $user->save(); 直接更新数据 也可以直接带更新条件来更新数据 $user = new UserMode

  • 更新数据表中的数据 Db::name('user') ->where('id', 1) ->update(['user_nickname' => '老猫是家里最懒的猫']); 如果数据中包含主键,可以直接使用: Db::name('user') ->update(['user_nickname' => '老猫是家里最懒的猫', 'id' => 1]); update 方

  • 查找并更新 在取出数据后,更改字段内容后更新数据。 $user = UserModel::find(1); $user->user_nickname = '老猫'; $user->user_email = 'genmaowan@163.com'; $user->save(); 批量更新数据 可以使用saveAll方法批量更新数据,例如: $user = ne