使用服务器的云firestore



我使用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在我的应用程序,从服务器获取此列表,不做自己的工作。

我如何实现这个?

我的意思是我不想在我的应用程序中运行循环而是在服务器上运行并且希望服务器只向我发送列表

在这种情况下,您应该将queryssnapshot对象直接映射到自定义对象的List中。假设您有一个类似于下面的类:

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类clazz)其中:

返回querysapshot中文档的内容,转换为提供的类,作为列表。

还要注意,查询返回的文档越多,读取时间就越长。除了限制结果之外,没有其他方法可以解决这个问题。

如果您只想要文档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);
}

相关内容

  • 没有找到相关文章

最新更新