【问题标题】:Firebase Realtime Database reading data doesn't workFirebase 实时数据库读取数据不起作用
【发布时间】:2021-05-10 08:56:23
【问题描述】:

我已使用 Firebase 设置托管。

将 Firebase 与 Firebase 实时数据库结合使用,这是我目前的代码:

  var config = {
    // don't post keys publicaly
  };

  var database = firebase.database()

  var userRef = database.ref('User');

  userRef.on('value', (snapshot) => {
    const data = snapshot.val();
    console.log(data)
  });

注意:当我在声明var config 后有firebase.initializeApp(config) 时,它会在控制台中返回错误:

未捕获的 FirebaseError:Firebase:名为“[DEFAULT]”的 Firebase 应用已存在 (app/duplicate-app)。

我假设应用程序已经初始化并且没有插入初始化代码。

Firebase 文档状态:

侦听器收到一个快照,其中包含在 事件发生时数据库中的指定位置。你可以 使用 val() 方法检索快照中的数据。

这是我的数据库:

这是从数据库导出的json数组:

{
  "User" : "John Smith"
}

当我运行代码时,它不会在控制台中记录任何内容。这可能是路径问题吗?

我认为var userRef = database.ref('User') 有效。 这里有什么问题?

【问题讨论】:

  • 尝试在配置中声明 appId 和项目 id。
  • 控制台仍然没有登录。该脚本文件位于public 文件夹中,这会是个问题吗?主要目标是将数据库中的数据显示到我的静态网站中。
  • @itsisaac19 您能否提供您尝试过的完整代码列表,您将配置与 firebase 连接起来。
  • @Ashish 这是我的完整代码。您想要 HTML、CSS 等吗?

标签: node.js firebase firebase-realtime-database


【解决方案1】:

我发现了我的问题。问题是访问数据库。我的规则是这样的:

{
  "rules": {
    ".read": "auth.uid != null",
    ".write": "auth.uid != null"
  }
}

如果您是经过身份验证的用户,那么正确的设置是 我阅读了 Firebase Permission Denied 即使我在控制台中没有收到错误。我将 JSON 设置为 true,如下所示:

{
  "rules": {
    ".read": true,
    ".write": true
  }
}

这解决了我的问题。

很不幸,这个愚蠢的错误引起了这一切。如果我们无法访问数据库,我们应该会在控制台中收到错误消息。我知道监听器on('value') 只会在有值的情况下返回,但应该有一个更实用的监听器可以让你知道你是否无权访问数据库。特别是对于像我这样的初学者来说,很难跟踪正在发生的所有其他事情 - 像这样的小事情会无缘无故地让我们陷入困境。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-24
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 2020-08-18
    • 2023-02-23
    • 2022-10-07
    相关资源
    最近更新 更多