Firebase多位置更新,删除冗余数据作为更新的一部分

时间:2016-07-27 11:03:24

标签: javascript firebase-realtime-database

我使用firebase多位置更新来更新数据库中的多个位置。

其中一个更新路径包含一个值,该值可以作为更新的一部分进行更改,从而在新路径位置创建一个正确的新记录。然后,这将在原始位置留下冗余数据,我需要将其作为更新的一部分进行删除。有人可以给我一个关于如何删除冗余数据的指针作为更新的一部分吗?

我使用以下代码创建更新: -

var updatedUserDataContent = {
    title: $scope.postToUpdate.title
    commenter: $scope.postToUpdate.commenter
};

updatedUserData["Posts/" + $scope.postToUpdate.$id] = updatedUserDataContent;

updatedUserData["UserPosts/" + $scope.postToUpdate.commenter + "/"   + $scope.postToUpdate.$id] = updatedUserDataContent;

在保存之前,用户可以在记录中更改commenter,将冗余数据留在原始commenter节点中。我已尝试使用安全规则,但这些数据是在创建而不是删除的情况下停止的。

修改1

按要求提供JSON。 在更新之前我有

{
  "Not assigned" : {
"-KNfs3OhBmbb93w9VEW-" : {
  "title": "vytg",
  "commenter":  "Not assigned"
   }
  }
 }

更新后(将commenter更改为"未分配"至"用户A")我

{
  "Not assigned": {
"-KNfs3OhBmbb93w9VEW-": {
  "title": "vytg",
  "commenter": "Not assigned"
}
  },
"User A" : {
"-KNfs3OhBmbb93w9VEW-" : {
  "title": "vytg",
  "commenter":  "User A"
}
  }
 }

但我想要

{
"User A" : {
"-KNfs3OhBmbb93w9VEW-" : {
  "title": "vytg",
  "commenter":  "User A"
}
  }
 }

1 个答案:

答案 0 :(得分:1)

您正在尝试移动/重命名节点,这不是数据库支持的操作。

由于新数据写得正确,所需要的只是清除旧节点。将null放入该位置将会解决这个问题:

updatedUserData["Not assigned"] = null;