Firebase返回未定义的子项已添加

时间:2015-11-28 04:20:46

标签: firebase

以下代码在浏览器中本地运行。在页面刷新时,它检索前2个对象并将三个对象值写入控制台。

ref.orderByChild("Timestamp").limitToLast(2).on("child_added", function (snapshot) {           
            var payload = snapshot.val();
            var file = payload.filePayload;
            var timestamp = payload.TimeStamp;
            var sDate = payload.DateString;
            console.log(file);
            console.log(timestamp);
            console.log(sDate);
        });

这样的东西
ImageOne.jpg
1448683124188
Nov 27, 5:30pm

问题是当在数据库中创建一个新条目时,我只获取文件名,而另外两个(时间戳和日期)在控制台输出中是“未定义的”。

如果我刷新页面,则会正确填充这些未定义的字段。 它总是缺少那两个值。永远不要提交

1 个答案:

答案 0 :(得分:1)

问题似乎是,只要你执行“setValue”,它就会写入数据库并通知客户端。即使您有更多数据要写,它们也会检索数据。

我做的事情是:

Firebase newItem = firebase.push();

newItem.child("filePayload").setValue(fileString);
newItem.child("TimeStamp").setValue(ServerValue.TIMESTAMP);
newItem.child("DateString").setValue(now);

第一个setValue发生后,客户端就会收到通知并获得数据,但只有filePayload。其他两个值仍然写入数据库。如果客户端刷新,则检索所有三个值。

我将代码更改为以下内容,现在可以正常使用

Firebase newItem = firebase.push();

Map<String, Object> entry = new HashMap<String, Object>();
entry.put("filePayload", fileString);
entry.put("DateString", now);
entry.put("TimeStamp", ServerValue.TIMESTAMP);

newItem.setValue(entry);