【问题标题】:Firebase realtime database sdk not getting snapshot?Firebase 实时数据库 sdk 没有获取快照?
【发布时间】:2021-06-07 18:59:33
【问题描述】:

我有以下代码:

    database.ref('users/' + userId + '/data/').once('value').then(function (snapshot) {
        if (snapshot.exists()) {
            console.log(snapshot.val());
            dailySteps = snapshot.val();
        }
        else {
            console.warn("No prior user data availible.");
        }
    }).catch(function (error) {
        console.error(error);
    });

还有如下数据库结构:

每日步骤是一个包含 31 个元素的列表。当我尝试以下操作时

 database.ref('users/' + userId).once('value').then(function (snapshot) { etc...

我得到的用户数据非常好,所以我知道一些事情:
A. 认证没问题,这不是数据库规则的问题
B. UserID 很好,所以这不是问题
C. Firebase JS SDK 很好,所以这不是问题
但是,当我尝试您在顶部看到的添加了确实存在的数据路径的代码时,我得到了一个空快照!我已经尝试了一切,使用 database.child 而不是 ref,使用 .once,使用 .get,但没有任何效果!发生了什么事,为什么我不能获取这些数据?我在 localhost 的命令行之外的 firebase 托管模拟器上运行它,以防万一它很重要。

如果人们仍然想知道这些是我的数据库规则:

【问题讨论】:

  • userId是如何初始化的?
  • 我正在使用 firebase 身份验证,所以它只是使用其中的用户 ID,你在想什么? @FrankvanPuffelen
  • 我认为我们需要看看userId 是如何初始化的,因为这是最可能导致无法读取数据的原因。
  • 好的,我下次在电脑前更新帖子。不过,我可以很好地读取电子邮件、姓名和个人资料图片等用户数据。用户 ID 通过 firebase.auth.currentuser().uid btw 访问
  • 你怎么知道快照是空的?您是否收到错误和/或打印到控制台的内容?

标签: javascript firebase firebase-realtime-database


【解决方案1】:

想通了,原来我一直都是个大笨蛋,这不是你们能看到的,因为我没有发布我的所有代码, TLDR:我在尝试读取页面加载的同时删除和替换数据,忘记在目录上执行 .set 替换包括子项在内的所有内容。

【讨论】:

    猜你喜欢
    • 2021-01-21
    • 2021-03-26
    • 2022-01-21
    • 2019-05-07
    • 2019-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多