火力地堡child_added
问题描述:
我有我的应用程序现在的工作,但我不知道为什么它的工作原理...火力地堡child_added
我有类似这样的代码:
var itemRef;
listRef.on('child_added', function(childSnapshot, prevChildName) {
itemRef = childSnapshot;
});
的问题是,当我尝试以后使用itemRef
它不起作用。然而,我花了几个小时才意识到该参考不起作用,因为itemRef.name()
返回了参考的正确名称。
在搜索API时,我遇到了.ref()
函数。 API指出.ref()
返回“生成此DataSnapshot的位置的Firebase参考”。本作的功能听起来完全没有意义的给我,但我还是决定试一试:
var itemRef;
listRef.on('child_added', function(childSnapshot, prevChildName) {
itemRef = childSnapshot.ref();
});
谁能向我解释为什么.ref()
让我参考工作的时候它是所有回报“生成的位置的火力地堡参考这个DataSnapshot“。 ??
答
Firebase公开了两种不同类型的对象:Firebase references和DataSnapshots。
Firebase参考就像一条路径。它只是指向Firebase中的某个位置。您可以使用它设置()数据,使用on()附加事件回调等。
DataSnapshot存储在某个时间点从Firebase检索的数据。它只包含数据。您可以调用.child(),.val()等来读取数据,但不能用它来执行set()或任何其他Firebase操作。
因此,您的第一个代码段不起作用,因为它存储的是与Firebase参考不同的快照。恰恰相反,两个对象都有一个.name()函数,其行为相同,这可能导致混淆。
啊好的,所以DataSnapshot本质上是只读的我猜... 谢谢,很好地解释一如既往。从目前为止我所见过的Firebase我都很喜欢。保持良好的工作! – 2012-07-23 21:49:13