Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在唯一密钥内获取firebase数据库嵌套数据访问_Javascript_Arrays_Firebase_Firebase Realtime Database - Fatal编程技术网

Javascript 如何在唯一密钥内获取firebase数据库嵌套数据访问

Javascript 如何在唯一密钥内获取firebase数据库嵌套数据访问,javascript,arrays,firebase,firebase-realtime-database,Javascript,Arrays,Firebase,Firebase Realtime Database,在firebase中,我希望访问以下编写的数据库 函数fnReadMails(){ var user=firebase.auth().currentUser; var ref=firebase.database().ref('/posts/'+user.uid); 参考“值”,功能(快照){ var vardata=(snapshot.val()); console.log(vardata); }); } 问题是,红色标记的字符串是随机生成的唯一按键。每当我得到一个引用时,我都能够将引用提

在firebase中,我希望访问以下编写的数据库


函数fnReadMails(){
var user=firebase.auth().currentUser;
var ref=firebase.database().ref('/posts/'+user.uid);
参考“值”,功能(快照){
var vardata=(snapshot.val());
console.log(vardata);
});
}
问题是,红色标记的字符串是随机生成的唯一按键。每当我得到一个引用时,我都能够将引用提升到一个更高的级别,即
userid
,但我想访问该密钥中的数据,我不知道,因为它将自动为下一篇文章生成


如何访问密钥内的嵌套数据?

如果希望添加
子项
事件类型,这将记录ref下每个子项的快照

ref.on("child_added", function(snapshot) {
    console.log(snapshot);
});

如果要添加
child\u
事件类型,这将记录ref下每个孩子的快照

ref.on("child_added", function(snapshot) {
    console.log(snapshot);
});

除了Callam的答案,您还可以继续使用
事件。但是在这种情况下,您必须使用
forEach()
循环消息:


这两种方法(使用
value
和使用
child.*
)都会导致相同的网络流量。但是使用
value
通常更容易入门,而使用
child
事件则更容易更新需要更新的特定UI元素。

作为Callam答案的替代方法,您也可以继续使用
value
事件。但是在这种情况下,您必须使用
forEach()
循环消息:


这两种方法(使用
value
和使用
child.*
)都会导致相同的网络流量。但是使用
通常更容易入门,而使用
子事件则更容易更新需要更新的特定UI元素。

@Dravidianjavascript@DravidianJavaScriptThank@Frank van Puffelen;它对我有用,但如何存储记录数的值。on函数是否已弃用?对我来说,它无法解析符号。谢谢@Frank van Puffelen;它对我有用,但如何存储记录数的值。on函数是否已弃用?它不能为我解决这个问题。
ref.on("value", function(snapshot) {
  snapshot.forEach(function(messageSnapshot) {
    console.log(messageSnapshot.val());
  }
});