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

标签 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"
}
  }
 }

最佳答案

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

由于新数据已正确写入,因此您只需清除旧节点即可。将 null 放入该位置即可解决此问题:

updatedUserData["Not assigned"] = null;

关于javascript - Firebase 多位置更新,删除冗余数据作为更新的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38611158/

相关文章:

javascript - 使用 .js 文件缓存大型下拉列表

javascript - 定期更新 firebase 条目

javascript - 在 For 循环中对异步调用进行排序 - Javascript

javascript - 脚本标签内的 HTML?

javascript - 简单的 Javascript 循环无法按预期工作

javascript - 使用 YQL 以尽可能低的资源使用率(即最少的查询数量)执行图像抓取

ios - Swift 将数组传递给函数并返回

javascript - React Native 中的 Axios - 无法发布 Blob 或文件

javascript - 如何从 Firebase 数据快照中检索数据

ios - Swift 无法识别 Firebase 用户