Javascript 添加Firebase child_

Javascript 添加Firebase child_,javascript,firebase,Javascript,Firebase,我的应用程序正在运行,但我不知道为什么它会运行 我有一些类似的代码: var itemRef; listRef.on('child_added', function(childSnapshot, prevChildName) { itemRef = childSnapshot; }); 问题是,当我后来尝试使用itemRef时,它不起作用。然而,我花了几个小时才意识到引用不起作用,因为itemRef.name()返回了引用的正确名称 在搜索API时,我遇到了.ref()函数。API声

我的应用程序正在运行,但我不知道为什么它会运行

我有一些类似的代码:

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公开了两种不同类型的对象:和

Firebase引用类似于路径。它只是指向Firebase中的一个位置。您可以使用它来设置()数据,使用on()附加事件回调,等等

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


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

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

Firebase引用类似于路径。它只是指向Firebase中的一个位置。您可以使用它来设置()数据,使用on()附加事件回调,等等

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


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

啊,好吧,我想DataSnapshot本质上是只读的。。。谢谢,和往常一样解释得很好。从目前为止我对Firebase的了解来看,我喜欢Firebase。继续努力!啊,好吧,我想DataSnapshot基本上是只读的。。。谢谢,和往常一样解释得很好。从目前为止我对Firebase的了解来看,我喜欢Firebase。继续努力!