【发布时间】: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) => { prj.configs.menu = snapshot.val(); }); -
@FrankvanPuffelen 确实,代码很简单,但不幸的是,错误并没有太大帮助。我正在使用该 CDN 中的 V8 firebase js sdk。是否有其他来源可用?也许图书馆是问题,但我在任何地方都找不到其他 CDN。我目前无法使用模块化 v9。
-
v8 也可以正常工作,所以这不是问题所在。但是如果没有看到一个最小但完整的复制品,很难说发生了什么。您能否在 jsbin 或 stackblitz 之类的网站上设置复制品,以便我们看一下?所以不是您的项目的副本,而是我们可以实际运行的最小复制。
标签: javascript jquery firebase firebase-realtime-database