【问题标题】:Firebase : Read-only & non-realtime mode activated to improve browser performanceFirebase:激活只读和非实时模式以提高浏览器性能
【发布时间】:2016-07-29 05:38:32
【问题描述】:

激活只读和非实时模式以提高浏览器性能

我的项目中弹出消息,我也无法删除节点

我也读过这个https://groups.google.com/forum/#!topic/firebase-talk/qLxZCI8i47s

其中规定:

如果您的 Firebase 中有很多节点(比如数千个),我们需要为每个节点创建一个新元素,而现代浏览器只是限制了您可以向页面添加多少 DOM 元素

上面写着:

要解决此问题,请不要将 Firebase 仪表板加载到 Firebase 的根目录,而是将其加载到层次结构的较低位置

我不明白这是什么意思

如何返回我的实时仪表板?

【问题讨论】:

    标签: firebase firebase-realtime-database firebase-console


    【解决方案1】:

    如果您想在激活时删除高级节点,我建议您这样做。

    打开文本编辑器并输入{ }。将此文件另存为“blankJSON.json”。

    转到您要删除的高级节点并选择它,一旦它打开并显示所有需要删除的节点,选择右上角的三个栏并选择“导入 JSON”,(它会是安全首先“导出 JSON”如果你没有备份,以防你在这里犯了错误)。导入我们之前创建的名为“blankJSON”的 JSON 文件。

    这将删除里面的所有数据。

    再次,我强烈建议您在执行此操作之前进行备份,备份非常容易,并且比您想象的要容易得多,将这个空白JSON上传到错误的节点然后擦除一堆重要数据.

    【讨论】:

    • 智能解决方案,谢谢
    • 智能简单的解决方案!
    • 太棒了!
    • 这对我来说是一个完美的解决方案,用更少的时间完成
    • 确实如此。越简单越好!
    【解决方案2】:

    当它检测到从您的数据库中下载的节点过多时,Firebase 控制台会停止使用实时模式并切换到只读模式。在这种模式下,它需要浏览器的工作较少,因此浏览器更有可能保持高性能。

    要返回实时模式,您必须转到节点较少的位置。所以说你从根开始加载数据库,这意味着数据树顶部的“伪地址栏”会说:

    https://<your-project>.firebaseio.com/
    

    然后会显示项目列表。现在单击该伪地址栏中的 URL 并将其更改为:

    https://<your-project>.firebaseio.com/<one-of-your-keys>
    

    然后点击 enter。数据树将仅使用来自one-of-your-keys 和向下的节点重新加载,并且可能会再次切换到实时模式。

    【讨论】:

    • 但是如何从浏览器中删除具有大量子节点的高级节点?出于某种原因,甚至在事务中使用对 mutableData.setValue(null) 的调用对高级节点进行编程删除也停止了为我删除该节点......该方法之前已经有效
    • 好吧,对不起,看起来程序化删除对我有用,只需要几秒钟就可以反映在浏览器中......所以结论:对于具有大 nr 的节点。的孩子我只能以编程方式删除,而不是从浏览器中删除
    • @dangling_refrenz 有点晚,但实际上您可以在浏览器中删除高级节点。您可以在下面查看我的答案。
    • @FrankvanPuffelen 嘿,我尝试了上述方法,但 firebase 控制台仍然显示:只读和非实时模式已激活以提高浏览器性能。如何再次切换回实时模式?
    【解决方案3】:

    firebase 中的每个节点键都是一个链接,您可以在新选项卡中打开一个子节点,然后编辑该子节点及其子节点。

    1. 右键单击要编辑或删除的子节点

    2. 在新标签页中选择打开的链接

    3. 在新标签中编辑子节点

    【讨论】:

    • 这是一个很棒的观察!这意味着你可以通过地址栏输入你想要的节点,即使子节点不存在!这允许您创建新节点,即使其父节点太大。
    • 这是最好的解决方案,因为您只需右键单击并选择在新选项卡中打开和 tada .. 谢谢 Ashwin!
    • 但是如果您必须编辑的节点有很多节点,这将不起作用。 Firebase 仍会向您显示“只读”模式。
    【解决方案4】:

    您可以做的是拥有一个OnClickListener 并将删除值方法调用到您的DatabaseReference,如下所示:

      mCart.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mDatabaseReference.removeValue();
            }
        });
    

    【讨论】:

      【解决方案5】:

      1) 点击要批量删除的节点

      2) 导入一个空的 .json 文件(只包含花括号,{})

      3) 节点值将被设置为 null,换句话说,它被删除或者被一个空节点覆盖!

      【讨论】:

        【解决方案6】:

        我有同样的问题...我有点惊讶,因为我虽然 Firebase 可以轻松扩展以支持大量数据(例如百万用户等)。

        我有一个包含 80000 个子节点的节点(每个对象都有自己的 push-id),我无法删除它或对其执行任何操作,因为实时在 Firebase 控制台中不起作用。

        我认为更新或删除数据的唯一方法是通过 JAVA 代码:(

        【讨论】:

        • 这与 Firebase 的可扩展性无关,只是它们限制了大量节点的浏览器编辑
        【解决方案7】:

        多次尝试加载特定键可能会令人厌烦。有一个 python 库可以轻松地为您完成此操作。

        http://ozgur.github.io/python-firebase/

        我需要删除很多键,这有助于我一次性完成。

        【讨论】:

        • 始终欢迎提供潜在解决方案的链接,但如果链接不再可用,请为未来的访问者添加一些详细信息。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-26
        • 2010-12-31
        相关资源
        最近更新 更多