【发布时间】:2014-10-03 05:07:14
【问题描述】:
我想使用 once 方法从 Firebase 引用中检索数据,但在快照中没有收到任何数据。
这是简单的数据检索:
编辑 经过进一步检查,我发现在once 值侦听器之后不久安排了一个事务。 (为简单起见,我将在此代码示例的侦听器之后直接放置事务。)
dataRef.once('value', function (snapshot) {
snapshot.val(); // returns `null`
});
dataRef.transaction(function (currentValue) {
if (currentValue) {
// make changes
}
return currentValue;
});
这个 firebase ref 有数据。为了验证,我尝试使用on 而不是once。在这种情况下,回调被调用了两次:
dataRef.on('value', function (snapshot) {
snapshot.val(); // returns `null` first, then called again and returns correct value
});
是什么导致了这种行为?我希望快照在第一次调用回调时具有正确的值。否则,once 方法没有用处。
【问题讨论】:
-
我用过
once很多次,知道它可以工作。很可能您正在做一些不同的事情,不幸的是,仅从这些代码 sn-ps 很难分辨出来。您能否在问题中(单击“编辑”,然后单击“代码 sn-p”)或在 jsfiddle/jsbin 上提供问题的最小再现? -
我也至少用过一次……呃,一次,成功了;数以万计的不起眼的开发人员和数十个非常杰出的企业客户都做了同样的事情。
-
感谢您的健全性检查,您说得对,还有其他事情正在发生。经过更多的挖掘和检查,我发现在
once值侦听器之后不久安排了一笔交易。我将更新原始问题以反映新信息。
标签: javascript node.js firebase