首页 > 解决方案 > 减少 android Firestore 中的代码重复

问题描述

我真的在努力使用 Firestore 来减少代码的重复。最近我问了一个不同主题但有点相似的问题。在这里,我要问的问题是如何减少 android for Firestore 中的代码重复?

假设我必须按名称获取city文档,city那么我必须每次编写此代码。

db.collection("cities")
    .whereEqualTo("name", name)
    .get()
    .addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
        @Override
        public void onSuccess(QuerySnapshot query) {
            query.getDocuments().get(0).getReference(); 
           // make custom call back here to get the value of this 
           // outside of here but that is not enough to reduce 
           // duplication of code.
        }
    });

假设我必须获取 10 个文档,并且在应用程序中可能会重复大约一百次,然后100*10 = 1000重复类似的代码,真的吗?我没有找到任何解决此问题的方法。我不知道为什么没有足够的信息?Firestore 是否有任何代码模式?这可以帮助我减少重写代码的工作量吗?

不知道为什么这迫使我在编码重复上下文中讨厌 Firestore。-_-

@Downvoter,如果您认为这是一个愚蠢的问题,那么请详细说明为什么?你知道答案吗?或者有没有类似的问题有答案?

标签: androidfirebasegoogle-cloud-firestore

解决方案


您可以通过定义此方法来稍微减少重复:

void addCityListener(String name, OnSuccessListener<QuerySnapshot> listener){
    db.collection("cities")
      .whereEqualTo("name", name)
      .get()
      .addOnSuccessListener(listener);
}

然后,你调用这样的方法:

addCityListener(name, new OnSuccessListener<QuerySnapshot>(){
    @Override
    public void onSuccess(QuerySnapshot query){
        // do something with the query
    }
});

如果您在项目中使用 Java 8,则可以使用 lambda 进一步减少代码:

addCityListener(name, (QuerySnapshot query)->{
    // do something with the query
});

推荐阅读