我正在尝试仅将最后一个文档添加到特定集合中。阅读文档,我得到以下代码:
db.collection("Orders")
.onSnapshot(function(snapshot) {
snapshot.docChanges.forEach(function(change) {
if (change.type === "added") {
console.log("New order: ", change.doc.data());
}
if (change.type === "modified") {
console.log("Modified order: ", change.doc.data());
}
if (change.type === "removed") {
console.log("Removed order: ", change.doc.data());
}
});
});
但是它带来了多个文档。带来一切,因为它的阅读内容都是新的。 为了使上下文,它是一个订单数据库,所以我需要该应用程序监听添加的最后一个订单,而不是全部。 我将非常感谢您的帮助! 谢谢!
答案 0 :(得分:1)
Firestore没有最新的内置概念,或者至少没有您可以过滤的方式。因此,要允许您检索最新的文档,必须首先为每个文档添加一个时间戳。我建议为此使用服务器端时间戳,例如:
ordersCollection.add({
..., // all your other fields
timestamp: firebase.firestore.FieldValue.serverTimestamp()
});
有了这些,您可以通过排序和限制来获取最新文档:
db.collection("Orders")
.orderBy("timestamp", "desc")
.limit(1)
.onSnapshot(function(snapshot) {
snapshot.forEach(function(doc) {
console.log(doc.id, doc.data());
});
});