簡體   English   中英

如何在 Firestore 中獲取之前的文檔

[英]How to get the previous document in Firestore

我想瀏覽我的 firestore 收藏的下一篇和上一篇文章。 我已經設置了下一篇文章功能。 但是我不能做以前的功能。

這是我的下一個帖子查詢:

firestore()
      .collection('Posts')
      .orderBy(firestore.FieldPath.documentId())
      .startAfter(this.state.currentDoc)
      .limit(1)

但遺憾的是,firestore 不適用於.orderBy(firestore.FieldPath.documentId(), 'desc')我試過:

firestore()
      .collection('Posts')
      .orderBy(firestore.FieldPath.documentId())
      .limit(1)

它轉到集合的第一個文檔。 添加升序在這里不再起作用。

如果需要任何進一步的信息,請告訴我。

編輯:

根據答案,這就是我正在嘗試的內容,而不是 id,我使用的是帖子創建時的時間。 時間格式如下: 1625511322000

firestore()
      .collection('Posts')
      .orderBy('time', 'desc')
      .startAfter(this.state.currentDoc)
      .limit(1)

.startAfter()方法也應該按降序執行。

firestore()
      .collection('Posts')
      .orderBy("docID", "desc")
      .startAfter(this.state.currentDoc)
      .limit(1)

假設您有 4 個文檔:Doc1、Doc2、Doc3 和 Doc4。

在第一種情況下,在 startAfter 中傳遞startAfter將返回 Doc3。 (假設 DocID 按升序排列)。 與上startAfter文章類似,您可以按降序對列表進行排序並使用startAfter ,它應該返回Doc1

但是,您似乎無法使用本答案中提到的文檔 ID 按降序對文檔進行排序。 因此,您必須將文檔 ID 作為字段存儲在文檔中,然后按如下方式對其進行排序:

.orderBy("docID", "desc")

如果您嘗試使用文檔 ID 按降序排序,您最終會收到一個錯誤提示,提示您創建索引但您無法創建它。 Firestore 控制台將返回錯誤, “不支持僅名稱索引”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM