Javascript 如何从整个集合中仅获取最后添加的文档。随机应变
我正在尝试获取添加到特定集合中的最后一个文档。阅读文档时,我得到了以下代码:Javascript 如何从整个集合中仅获取最后添加的文档。随机应变,javascript,firebase,google-cloud-firestore,Javascript,Firebase,Google Cloud Firestore,我正在尝试获取添加到特定集合中的最后一个文档。阅读文档时,我得到了以下代码: db.collection("Orders") .onSnapshot(function(snapshot) { snapshot.docChanges.forEach(function(change) { if (change.type === "added") { console.log("New order: ", change.doc.data());
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());
}
});
});
但它带来的不仅仅是一个医生。带来所有,因为它读起来就像所有都是新的。
要创建上下文,它是一个orders db,所以我需要该应用程序监听最后添加的订单,而不是全部。
我真的很感激任何帮助!
坦斯克 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());
});
});
您如何准确定义“最后”文档是什么?如果您没有一个查询只获取该文档,那么无论您定义什么条件,每次都要获取每个文档。我需要将最后一个文档添加到集合中。我猜你这么说是因为forEach,我会更改它,但不知道应该使用哪个。你需要向文档添加时间戳,然后使用该时间戳字段查询该文档。集合中的文档没有自然时间顺序,您可以在不使用筛选器的情况下进行查询。谢谢。你能举个例子吗?我应该如何按最后一个时间戳过滤?