[英]cloud firestore using server
我正在使用 Cloud Firestore 作為 android 項目的數據庫。 我正在應用程序中編寫所有的 crud 操作,這使得它非常慢並且代碼很大。 我想將所有代碼轉移到服務器並使用該應用程序僅進行 API 次調用。
例如,
public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
List<String> usersf = new ArrayList<>();
for (DocumentSnapshot doc : queryDocumentSnapshots) {
usersf.add(doc.getId());
}
fi.onFollowingRetrieved(usersf);
}
在這里,我在我的應用程序中編寫了這段代碼,它為我提供了一個用戶 ID 列表。 我想在我的應用程序中寫一個 api,它從服務器獲取這個列表,而不是自己完成工作。
我該如何實施?
我的意思是我不想在我的應用程序中運行循環,而是在服務器上運行,並希望服務器只向我發送列表。
在那種情況下,您應該將 map QuerySnapshot object 直接放入自定義對象的 List 中。 假設您有一個與此類似的 class:
public class User {
public String uid;
public String name;
public String email;
public User() {}
User(String uid, String name, String email) {
this.uid = uid;
this.name = name;
this.email = email;
}
}
去掉for循環,直接獲取列表,請使用如下幾行代碼:
public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
fi.onFollowingRetrieved(queryDocumentSnapshots.toObjects(User.class));
}
看,我使用了 QuerySnapshot# toObjects(@NonNull Class clazz)其中:
返回 QuerySnapshot 中文檔的內容,轉換為提供的 class,作為列表。
還要注意,查詢返回的文檔越多,閱讀時間就越長。 除了限制結果之外,沒有任何破解方法。
如果您只想要文檔 ID,然后假設文檔 ID 由 UID 表示,那么您應該簡單地使用以下代碼:
public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
List<User> users = queryDocumentSnapshots.toObjects(User.class);
List<String> usersf = users.stream().map(user -> user.uid).toList()
fi.onFollowingRetrieved(usersf);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.