因此,我一直在使用Firebase作为我网站的数据库(这是一个使用HTML,CSS和JS的基于Web的项目),并且在从中检索数据时遇到了问题。
基本上,此站点允许用户创建字符的配置文件(他们可以填写名称,字符统计信息等),然后单击“提交”,它将把填写的值保存到数据库中。
值保存得很好,但是当我去检索数据时,该命令似乎什么也没做。
因此,为了获取配置文件,我一直在尝试使用以下代码来获取存储在指定的.ref(path)中的内容:
var uid = firebase.auth().currentUser.uid;
var getChar = firebase.database().ref('/users/' + uid + '/chars/').orderByKey();
根据Firebase文档,哪一个应该在.ref()中指定的路径上返回键列表。但是,每当我尝试访问var中的任何内容时,它只会为我提供包含如下所示数据库链接的字符串:
https://#mydatabaseurlhere.firebaseio.com/users/uid/chars
其中#mydatabaseurlhere是我在Firebase应用程序上创建的url,而uid是经过身份验证的用户的ID。
我一直在阅读文档,它告诉我上面的代码应该返回我指定的路径中的所有内容的列表,但到目前为止,它仅给了我一个链接。文档中是否缺少我可以访问数据库中当前数据的内容?因为我尝试使用.once()拍摄快照也无济于事。我还在/ users /上设置了规则,以允许任何人读取/写入数据库,但是我仍然无法访问数据(或者也许我正在访问,只是缺少如何检索数据)。
无论哪种方式,我都想知道如何去访问这些数据,因为对于为什么我似乎无法检索已成功写入数据库的数据感到非常困惑。
最佳答案
您正在定义查询。但这还没有检索到数据。
要检索数据,您需要附加一个侦听器。例如:
var uid = firebase.auth().currentUser.uid;
var getChar = firebase.database().ref('/users/' + uid + '/chars/').orderByKey();
getChar.on('value', function(snapshot) {
snapshot.forEach(function(child) {
console.log(child.key, child.val());
});
});