Firebase了解snapshot.child()

Mic*_*ogu 2 javascript firebase firebase-security firebase-realtime-database

考虑Firebase快速入门指南中引用的此数据结构(此处)

{"name": {"first": "Fred","last": "Flintstone"}
Run Code Online (Sandbox Code Playgroud)

文档说,可以使用以下命令访问查询返回的"name"的每个子对象的数据快照位置:

var ref = new Firebase("https://docs-examples.firebaseio.com/samplechat/users/fred");
ref.once("value", function(snapshot) {
     var nameSnapshot = snapshot.child("name");
     var name = nameSnapshot.val();

     name === { first: "Fred", last: "Flintstone"}

     var firstNameSnapshot = snapshot.child("name/first");
     var firstName = firstNameSnapshot.val();
     firstName === "Fred"

     var lastNameSnapshot = snapshot.child("name").child("last");
     var lastName = lastNameSnapshot.val();
     lastName === "Flintstone"

     var ageSnapshot = snapshot.child("age");
     var age = ageSnapshot.val();
     age === null (because there is no "age" child in the data snapshot)
});
Run Code Online (Sandbox Code Playgroud)

但是,当处理以下行时,有点奇怪.

var nameSnapshot = snapshot.child("name");
var name = nameSnapshot.val();
Run Code Online (Sandbox Code Playgroud)

name.firstname.last也被检索.那么为什么要使用这个快照方法"child()"呢?或者更确切地说,何时使用此方法是有益的,因为当您拉动父对象时,Firebase会提取所有子节点,或者有没有办法检索父节点/对象而不会拉动它的某些子节点?那么这个方法对我来说是有道理的.

任何信息将不胜感激!谢谢

Fra*_*len 7

有没有办法检索父节点/对象而不拉动它的一些孩子?

Firebase JavaScript API始终检索完整节点.所以:不,JavaScript API中没有办法获得浅薄的结果/

为什么要使用这种快照方法child()

如果我们比较snapshot.child("property")snapshot.val().property.该DataSnapshot.child()方法返回一个DataSnapshot,您可以从中ref再次获得.该val()方法将快照的值反序列化为JSON.因此,如果您需要,您必须构建自己的参考.但每个的价值在很大程度上取决于你的用例,所以"为什么"不是我能为你解答的.