是否
QuerySnapshot只從 Firestore 回傳添加/更新/洗掉的檔案或所有檔案,而不僅僅是更新的檔案?如果它回傳所有檔案,那么有沒有辦法只獲取新添加/更新/洗掉的檔案?
是什么區別
getDocuments(),并getDocumentChanges()在公司的FireStore的QuerySnapshot,以及何時使用它們?在下面的代碼中,它是回傳所有檔案還是僅回傳添加/修改/洗掉的檔案?因為這就像我們正在獲取所有檔案,然后根據它們的狀態對它們進行排序。這是正確的嗎?
.addSnapshotListener { snapshots, e -> if (e != null) { Log.w(TAG, "listen:error", e) return@addSnapshotListener } for (dc in snapshots!!.documentChanges) { when (dc.type) { DocumentChange.Type.ADDED -> Log.d(TAG, "New city:${dc.document.data}") DocumentChange.Type.MODIFIED -> Log.d(TAG, "Modified city: ${dc.document.data}") DocumentChange.Type.REMOVED -> Log.d(TAG, "Removed city: ${dc.document.data}") } } }
編輯:
這是我的代碼
.addSnapshotListener { value, error ->
if (error != null) {
cancel(
message = "Error fetching posts",
cause = error
)
return@addSnapshotListener
}
if (value != null) {
Log.d(TAG, "main value: ${value.size()}")
for (dc in value.documents) {
Log.d(TAG, "dc ${dc.data}")
}
offer(reaction)
}
}
最初,當應用程式打開時,我會收到所有檔案,并且沒問題。但是當我修改一個檔案時,我仍然得到所有檔案(Log.d(TAG, "main value: ${value.size()}")答案是 2。我現在總共有 2 個檔案,所以我正在修改和未修改兩個檔案)。意味著首先我將獲得所有檔案,然后我將使用getDocumentChanges().
我的代碼在 Kotlin 中。
uj5u.com熱心網友回復:
- 是否
QuerySnapshot只從 Firestore 回傳添加/更新/洗掉的檔案或所有檔案(不僅是更新的檔案)?
一個QuerySnapshot物件包含公司的FireStore查詢的所有結果。因此,如果您在 Firestore 中執行查詢,則回傳的所有結果都可以在QuerySnapshot物件中找到。
- 如果它回傳所有檔案,那么有什么方法可以只獲取新添加/更新/洗掉的檔案?
就在這里。您使用addSnapshotListener(EventListener listener)來實時偵聽更新。這意味著可以隨時查看快照之間的變化。因此,如果僅添加、修改或洗掉檔案,您會收到通知。但也請注意,您無法跳過檔案的初始檢索。
- Firestore 的 QuerySnapshot之間
getDocuments()和getDocumentChanges()中的區別是什么?何時使用它們?
所述getDocuments()方法:
按照查詢的順序回傳此 QuerySnapshot 中的檔案作為串列。
而getDocumentChanges()方法:
回傳自上次快照以來更改的檔案串列。
所以每種方法都做不同的操作。
編輯:
- 在下面的代碼中,它是回傳所有檔案還是僅回傳添加/修改/洗掉的檔案?因為這就像我們正在獲取所有檔案,然后根據它們的狀態對它們進行排序。這是正確的嗎?
它會在您第一次打開應用程式時獲取所有檔案,不幸的是,此行為無法更改。緊接著,每個方法將根據執行的操作觸發。例如,如果添加了檔案,你只能得到一個單一的檔案${dc.document.data}。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/367532.html
標籤:火力基地 科特林 谷歌云平台 谷歌云firestore
