如何从整个集合中获取最后添加的文档。 OnSnapshot

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从整个集合中获取最后添加的文档。 OnSnapshot相关的知识,希望对你有一定的参考价值。

我试图在特定的集合中添加最后一个文档。阅读文档我得到以下代码:

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());
        }
    });
});

但它带来了不止一个文档。带来所有因为它的阅读像所有都是新的。为了制作上下文,它是一个订单数据库,所以我需要应用程序来监听最后添加的订单,而不是全部。我真的很感激任何帮助! Thansk!

答案

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());
    });
});

以上是关于如何从整个集合中获取最后添加的文档。 OnSnapshot的主要内容,如果未能解决你的问题,请参考以下文章

如何从 MongoDB 集合中获取具有匹配键的最后 N 个元素

如何从 MongoDB 集合中获取具有匹配键的最后 N 个元素

XQuery 如何使用 WHERE 查询获取整个 xml 文档

Firestore - 如何在将文档添加到集合后获取文档 ID

如何获取集合中的文档数量? [复制]

MongoDB:如何使用 _id 获取集合中的最新文档?