Javascript 向Firebase中的每个子级添加数据

Javascript 向Firebase中的每个子级添加数据,javascript,firebase,firebase-realtime-database,google-cloud-functions,Javascript,Firebase,Firebase Realtime Database,Google Cloud Functions,所以情况是这样的。每个用户都有一个任务列表,其中一些任务在不同的用户之间共享。这些用户拥有共享任务的单独副本,但具有相同的任务Id。现在我想为所有这些任务添加一个commentSectionId。显然,具有相同任务Id的任务应该具有相同的commentSectionId。 现在,通过查询主父节点并在其上迭代并逐个设置值,可以很容易地完成这项工作。但是我不想下载所有的用户数据。还有其他方法吗。您可以通过创建对现有节点的引用,然后在该节点上调用update(newData)来向该节点添加数据。例如

所以情况是这样的。每个用户都有一个任务列表,其中一些任务在不同的用户之间共享。这些用户拥有共享任务的单独副本,但具有相同的任务Id。现在我想为所有这些任务添加一个commentSectionId。显然,具有相同任务Id的任务应该具有相同的commentSectionId。
现在,通过查询主父节点并在其上迭代并逐个设置值,可以很容易地完成这项工作。但是我不想下载所有的用户数据。还有其他方法吗。

您可以通过创建对现有节点的引用,然后在该节点上调用
update(newData)
来向该节点添加数据。例如

var ref = firebase.database.ref("/UserTasks/uidOfAUser/idOfATask");
ref.update({ comments: {
  "-Ldsfjklfdsgsd": {
    auth: "hiten pannu",
    text: "This is a comment"
  },
  "-Ldsfjklfdsgzz": {
    auth: "puf",
    text: "This is a response"
  }
});

如您所见,这不会加载任务的数据。但它确实要求您知道用户的UID和您试图更新的任务的ID。

谢谢您的评论,Frank。但这才是真正的问题,用户和任务不是特定的,因此,我必须遍历所有用户和任务,并检查该任务是否分配了任何注释id。如果任务没有任何commentSectionId,我必须在本地映射中检查我们是否为该任务id分配了任何commentSectionId。1.我在Firebase中维护一个关系节点,其中我只将taskId映射为CommentSectionId 2。我导出数据库,运行上面注释中描述的逻辑,并将其导入firebase。因为我的客户群大约在5000人左右,而且都属于同一时区。我认为这不会造成太大的问题。您有什么建议?第一种方法听起来像是双向数据映射,这在NoSQL数据库中非常常见。第二种方法听起来像ETL管道,然后再次导入数据。当您在外部系统中修改数据时,这似乎有数据更改的风险,这似乎是个坏主意。再说一次:这两种方法都可能奏效,这意味着这是你个人的偏好,你更熟悉的是什么,你认为什么最适合你的系统。