如何在 Next.js [已关闭] 中按 Firestore/Firebase 中的时间戳执行递减订单

How to do a decending order by timestamp from Firestore/Firebase in Next.js [closed]

提问人:Techlover69 提问时间:11/17/2023 最后编辑:Mark RotteveelTechlover69 更新时间:11/19/2023 访问量:23

问:


编辑问题以包括所需的行为、特定问题或错误以及重现问题所需的最短代码。这将帮助其他人回答这个问题。

20小时前关闭。

我想知道如何使用按时间戳排序从 Firestore 获取我的文档。我已经尝试了一段时间,但是有一个奇怪的错误,我无法正确排序。似乎第一个文档总是卡在我的代码中,成为第一个被获取的文档。

async function getAllDocuments(collectionName) {
    // Get the collection reference
    const collectionRef = collection(db, collectionName);
    

    // Get all documents in the collection
    const querySnapshot = await getDocs(query(collectionRef,orderBy(orderBy("timestamp", "desc"))));

    // Return the data for all documents
    return querySnapshot.docs.map((doc) => doc.data());
}

我主要在工作中使用这个功能,但在 2023 年什么的似乎不起作用。我的技术堆栈是带有 JSX 和 Firebase 的 Next.js 用于后端操作。

JavaScript reactjs firebase google-cloud-firestore next.js

评论

1赞 Doug Stevenson 11/17/2023
目前尚不清楚您所说的“似乎第一个文档总是卡在我的代码中,以成为第一个被获取的文档”是什么意思。请编辑问题以更详细地解释哪些内容未按预期方式工作,并显示数据库中的源数据和日志输出,以说明您观察到的问题。我们目前无法看到您数据库中的数据或任何变量。
0赞 Techlover69 11/17/2023
嘿,在我的 nextjs 应用程序(一个博客)中,我删除了我的 firestore 上的所有虚拟数据,以便在我添加新的真实数据后从头开始,然后在 nextjs 中使用 data.map() 似乎我总是得到我的第一个元素的数据,无论它是否旧,它就像 firebase 一样没有按降级或终止顺序对数据文档进行排序。所以我尝试使用上面的代码来修复它,但它不起作用,我认为它是 2018 年的旧代码,或者我问的原因,也许有一种更新的语法来修复 Firestore 中的查询。
0赞 Doug Stevenson 11/17/2023
编辑问题以提供所有调试详细信息,以便我们可以跟进该问题。不要在评论中留下重要信息。

答:

0赞 Ale_Bianco 11/17/2023 #1

该函数采用两个参数:集合引用和排序(如果需要)。在这种情况下,您应该将排序作为第二个参数传递给函数。您有 2 个 func 按顺序排列queryqueryorderBy

async function getAllDocuments(collectionName) {
  const collectionRef = collection(db, collectionName);
  const querySnapshot = await getDocs(query(collectionRef, orderBy("timestamp", "desc")));

  // Return the data for all documents
  return querySnapshot.docs.map((doc) => doc.data());
}