Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从整个集合中仅获取最后添加的文档。随机应变_Javascript_Firebase_Google Cloud Firestore - Fatal编程技术网

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,我会更改它,但不知道应该使用哪个。你需要向文档添加时间戳,然后使用该时间戳字段查询该文档。集合中的文档没有自然时间顺序,您可以在不使用筛选器的情况下进行查询。谢谢。你能举个例子吗?我应该如何按最后一个时间戳过滤?