【问题标题】:Delete from Firebase Realtime Database从 Firebase 实时数据库中删除
【发布时间】:2017-12-20 12:54:31
【问题描述】:

我的数据库有这样的结构:

帖子

-> Key
   -> PostId
   -> PostName
   -> PostDescription
   -> PostDescription2
   -> Location
   -> Author
   -> Date

-> Key
   ->
   ->
   .... 

不知何故,PostDescription 字段已在 PostDescription2 中重复,我有 n 个这样的节点,我想从所有节点中删除 PostDescription2 的所有条目。我怎样才能做到这一点 ?

我在 google 上进行了一些搜索,但大多数文章都讲述了如何使用查询中的一些逻辑删除子节点或其中的字段。另外,我对 firebase 有点陌生。

【问题讨论】:

  • 您需要对get all the relevant nodesloop over themremove the property from each 执行查询。如果您在执行这些步骤中遇到困难,请展示您尝试过的内容。这样会更容易提供帮助。
  • 嗨,谢谢@Frank,问题已解决。我只是从数据库中获取了错误的引用。
  • 嗨@Frank,有没有办法从控制台查询 Firebase 数据库,就像 aws 为 DynamoDB 提供的一样?

标签: firebase firebase-realtime-database


【解决方案1】:

您将需要执行此功能。 (接缝如此)删除代码示例可能看起来像 ie:posts 路径:

  var dB =  firebase.database();
  var dBRef =dB.ref('posts');
    dbRef.once('value', snpsht=>{
      snpsht.forEach(dp =>{
          var key = dp.key;
          dB.ref('posts/' +  key + '/PostDescription2').set(null);
      })
})

这将删除所有设置值为nullPostDescription2 字段。考虑帖子路径不是大数据以避免阻塞代码。如果是这样,您可以使用limitToLast 选项获取数据,例如:

var dBRef = dB.ref('posts').orderByChild('PostDescription2').limitToLast(1000);

此命令将按PostDescription2 对列表进行排序,指定子键的空值首先出现。我们使用上述代码从最后 1000 个项目中收集。

【讨论】:

  • 嗨,刚接触 Firebase。可以从 firebase 控制台调用此函数吗?如果是,如何?
  • 我认为控制台上没有这样的选项。但是还有另一种无需编码的直接方法。在控制台下载数据库(作为 json)。使用 json 编辑器编辑 json 文件。 (我使用括号)您可以在此编辑器中删除所有内容。比通过控制台在现有数据库上加载此文件。 (要小心,在编辑之前一定要复制你的数据)
  • 我不确定,但必须有更简单的方法从控制台执行此操作。
猜你喜欢
  • 2021-06-04
  • 2016-09-20
  • 1970-01-01
  • 2020-01-17
  • 2019-12-24
  • 1970-01-01
  • 2021-11-02
  • 1970-01-01
相关资源
最近更新 更多