我目前正在将我的应用程序从Realtimedatabase迁移到Firestore。我遇到了需要您提出建议的问题。
该应用程序用于能源监控系统,其中从客户端设备逐分钟传递数据。然后由位于不同位置的Web应用程序读取。客户端使用Python,服务器使用Web应用程序。
我的数据结构如下
Energmeter1
--->PowerData
-->Auto-ID1
-->Volt:315
-->timeint: 365789
-->Auto-ID2
-->Volt:318
-->timeint: 365790
现在在Web应用程序的接收端,我有一个图表应用程序,该应用程序会在添加每个数据时进行更新。
借助Firebase Realtime,我使用了下面的代码,这非常简单,无缝
var fb = firebase.database().ref(url);
fb.endAt().limitToLast(3).on('child_added', function(data)
每次创建新条目时,我都会使用它接收并在实时仪表板上显示它,但是使用Firestore似乎是不可能的
feeder1
.orderBy("timeint")
.onSnapshot(function(doc)
上面的函数检索查询中的所有记录,而不仅仅是最近添加的记录。
我的问题,
如果您需要更多详细信息,请告诉我,我很乐意提供
谢谢
答案 0 :(得分:1)
快照包含与查询匹配的所有文档。但是,通过检查docChanges
属性,您可以轻松地仅找到新添加的内容。来自Firestore documentation on checking changes:
db.collection("cities").where("state", "==", "CA") .onSnapshot(function(snapshot) { snapshot.docChanges().forEach(function(change) { if (change.type === "added") { console.log("New city: ", change.doc.data()); } if (change.type === "modified") { console.log("Modified city: ", change.doc.data()); } if (change.type === "removed") { console.log("Removed city: ", change.doc.data()); } }); });
所以在您的情况下:
feeder1
.orderBy("timeint")
.onSnapshot(function(snapshot) {
snapshot.docChanges.forEach(function(change) {
if (change.type === "added") {
// Do whatever you'd do on on('child_added' on the Realtime Database
}
});
});