Firebase child_added

时间:2012-07-23 20:52:26

标签: javascript firebase

我的应用程序现在正在运行,但我不确定它为什么会运行...

我有一些类似的代码:

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参考”。 ??

1 个答案:

答案 0 :(得分:4)

Firebase公开了两种不同类型的对象:Firebase referencesDataSnapshots

Firebase参考就像一条路径。它只是指向Firebase中的某个位置。您可以使用它来设置()数据,使用on()等附加事件回调。

DataSnapshot存储在某个时间点从Firebase检索到的数据。它只包含数据。您可以调用.child(),. value()等来读取数据,但不能使用它来执行set()或任何其他Firebase操作。

因此,您的第一个代码段不起作用,因为它存储的快照与Firebase参考不同。碰巧两个对象都有一个行为相同的.name()函数,这可能会引起混淆。