【问题标题】:firebase js sdk query snapshot return null or errorfirebase js sdk 查询快照返回 null 或错误
【发布时间】:2021-11-23 20:31:27
【问题描述】:

使用 firebase sdk 我成功登录了一个用户,但后来我无法从实时数据库中查询任何数据。 Chrome 控制台显示 snapshot.val() 为 null 或在 firebase-database.min.js 中引发错误。 我在参考值(来自官方文档和论坛)中尝试了多种查询和路径格式。 当我尝试 console.log 快照时,它返回一个 firebase 对象。添加 .val() 返回 null。但我有 db 上的数据。

我也尝试过 .once 或 await 异步函数,但结果相同。

我使用来自 cdn (v8) 的 firebase js sdk:https://cdnjs.com/libraries/firebase/8.10.0

代码和错误截图的链接:已删除

链接到精简版项目:已删除

Firebase 注入和初始化:

<!-- index.html -->

<script src="../lib/jquery_360/jquery360.min.js"></script>
<script src="../lib/bootstrap_5/js/bootstrap.bundle.min.js"></script>

<!-- <script src="../lib/firebase/firebase.min.js"></script> -->
<script src="../lib/firebase/firebase-app.min.js"></script> 
<script src="../lib/firebase/firebase-auth.min.js"></script>
<script src="../lib/firebase/firebase-database.min.js"></script>    

<script src="../script/modal.js"></script>
<script src="../script/utility.js"></script>

<script src="../script/customer.js"></script>

<title>customer</title>

// index.js - jquery onload function

const firebaseApp = firebase.initializeApp({
    // keys here...
});

auth = firebase.auth(); 
db = firebase.database(); 

firebase.auth().onAuthStateChanged((user) => {
    if (user) {
        var uid = user.uid;
        console.log('user logged in!');     
        
        $('#login_popup').modal('hide');
        Clear_Popup_Message('login_popup_msg_box', null); 
    
        GetAllData();         
    } else {
        console.log('user not logged in!');
    }
  });

// GetAllData()

db.ref('menus').orderByChild('list_order').on('value', (snapshot) => {
            prj.configs.menu = snapshot.val();  
});

【问题讨论】:

  • 我很难理解这个问题。请编辑您的问题以包含minimal, complete/standalone code, data, and error messages that any of us can run to reproduce the problem。在 Stack Overflow 上,链接到可能存在这些工件的另一个站点还不够好,因为这样的链接会随着时间的推移而失效 - 我们正在尝试建立一个知识库。
  • @FrankvanPuffelen 感谢您的建议,我更新了帖子。
  • 谢谢你????不过,我仍然看不到您共享的代码中该错误消息的来源。据我所知,此代码永远不会引发该错误:db.ref('menus').orderByChild('list_order').on('value', (snapshot) =&gt; { prj.configs.menu = snapshot.val(); });
  • @FrankvanPuffelen 确实,代码很简单,但不幸的是,错误并没有太大帮助。我正在使用该 CDN 中的 V8 firebase js sdk。是否有其他来源可用?也许图书馆是问题,但我在任何地方都找不到其他 CDN。我目前无法使用模块化 v9。
  • v8 也可以正常工作,所以这不是问题所在。但是如果没有看到一个最小但完整的复制品,很难说发生了什么。您能否在 jsbin 或 stackblitz 之类的网站上设置复制品,以便我们看一下?所以不是您的项目的副本,而是我们可以实际运行的最小复制。

标签: javascript jquery firebase firebase-realtime-database


【解决方案1】:

我不确定 Cloud Flare 上的库有什么问题,但如果我更改您的导入来源

<script src="https://cdnjs.cloudflare.com/ajax/libs/firebase/8.10.0/firebase-app.min.js" integrity="sha512-XNRpfd3CxEDrXcXWvht51k3l8G5cZhcY0kehFjUohBhgRDCozbdSaGz3w96WlDxAgiNZndKnpn1+4532FS3p3w==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/firebase/8.10.0/firebase-auth.min.js" integrity="sha512-GAEvFso2oksY5JFkHlrfLhZgAV6aL48qxnbxPnbKnNLeG/XsU/c0lh/g9gocZ2RtbRx6VDTqspPEy9ixWvbfzw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/firebase/8.10.0/firebase-database.min.js" integrity="sha512-XDKFSZOhFNmwmx69Xr0j3zmePQ3NoSgpzZPr49P6oV7ME5ZhEXUqu+KUA0vQtof87P6IX+ycg4PmSms/EF8/pw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

<script src="https://www.gstatic.com/firebasejs/8.10.0/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.10.0/firebase-auth.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.10.0/firebase-database.js"></script>

一切突然都没有错误。

【讨论】:

  • 非常感谢!它也解决了我本地项目中的问题。我看到了那些 gstatic cdn,但我找不到它们。它们在官方 Firebase 文档中的某个地方可用吗?
猜你喜欢
  • 2018-11-26
  • 1970-01-01
  • 1970-01-01
  • 2020-08-05
  • 2017-06-25
  • 1970-01-01
  • 2019-07-28
  • 2021-12-05
  • 1970-01-01
相关资源
最近更新 更多