【发布时间】:2018-11-05 03:32:14
【问题描述】:
我的后端是在 Firestore 上构建的,没有逻辑 OR 来构建我的查询,因此为了解决这个问题,我使用多个查询并将它们合并以模拟逻辑 OR,查询请求和合并工作完美,但是现在还有另一个问题,我得到了重复的数据,所以为了解决这个问题,我决定创建一个HashSet 并将我的对象存储在其中,但我仍然在哈希集中得到重复的数据
以下是我合并查询的方法:
Tasks.whenAllSuccess(c).addOnSuccessListener(new BaseValueOnSuccessListener(mapper, firebaseCallback));
c是Task的集合
这是我存储数据的方式(在我的自定义 BaseValueOnSuccessListener 监听器中):请检查我的 OnSuccess 方法
public class BaseValueOnSuccessListener<Model, Entity> implements OnSuccessListener<List<QuerySnapshot>> {
private FirebaseMapper<Entity, Model> mapper;
// FirebaseDatabaseRepositoryCallback is an interface
private FirebaseDatabaseRepository.FirebaseDatabaseRepositoryCallback<Model> callback;
public BaseValueOnSuccessListener(FirebaseMapper<Entity, Model> mapper,
FirebaseDatabaseRepository.FirebaseDatabaseRepositoryCallback<Model> callback) {
this.mapper = mapper;
this.callback = callback;
}
@Override
public void onSuccess(List<QuerySnapshot> querySnapshots) {
// Do what you need to do with your list
if (!querySnapshots.isEmpty()) {
// List<Model> data = new ArrayList<>();
Set<Model> data = new HashSet<>();
for (QuerySnapshot querySnapshot : querySnapshots) {
data.addAll(mapper.mapList(querySnapshot));
}
callback.onSuccess(new ArrayList<Model>(data));
}
}
}
【问题讨论】:
标签: java android firebase google-cloud-firestore