[英]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.