首页 > 解决方案 > 我无法从 Firestore 读取数据

问题描述

我最近开始使用 Firestore 进行开发,我附加的方法存在以下问题。

public void PopulateList() {
  _db = FirebaseFirestore.getInstance();
  if (new Networks( _activity ).verficaConexion()){
       storeRoomArrayList = new ArrayList <>();

       _db.collection( Colections.StoreRoom.NOMBRECOLECCION )
               .get()
               .addOnCompleteListener( new OnCompleteListener<QuerySnapshot>() {
                    @Override
                    public void onComplete(@NonNull Task <QuerySnapshot> task) {
                      if (task.isSuccessful()){
                           for (QueryDocumentSnapshot document : task.getResult()) {
                                String claveRepuesto = document.getData().get( Colections.StoreRoom.CLAVEREPUESTO ).toString();
                                String descripcion = document.getData().get( Colections.StoreRoom.DESCRIPCION ).toString();
                                String familia = document.getData().get( Colections.StoreRoom.FAMILIA ).toString();
                                String idFamilia = document.getData().get( Colections.StoreRoom.IDFAMILIA ).toString();
                                String idSubFamilia = document.getData().get( Colections.StoreRoom.IDSUBFAMILIA ).toString();
                                String interno = document.getData().get( Colections.StoreRoom.INTERNO ).toString();
                                String marca = document.getData().get( Colections.StoreRoom.MARCA ).toString();
                                String nroParte = document.getData().get( Colections.StoreRoom.NUMERODEPARTE ).toString();
                                String nroSerie = document.getData().get( Colections.StoreRoom.NUMERODESERIE ).toString();
                                String subFamilia = document.getData().get( Colections.StoreRoom.SUBFAMILIA ).toString();
                                String uniMedida = document.getData().get( Colections.StoreRoom.UMEDIDA ).toString();

                                storeRoomArrayList.add( new StoreRoom( claveRepuesto, descripcion,
                                        familia, idFamilia, idSubFamilia, interno, marca, nroParte,
                                        nroSerie, subFamilia, uniMedida ) );
                           }

                           InitRecyclerView(storeRoomArrayList);
                      } else{
                           Log.d("CargoListaStoreRoom", "Error getting documents: ", task.getException());
                      }
                    }
               });
    }else{
        Snackbar.make( this._progressBar, "Error Conexion", Snackbar.LENGTH_LONG ).show();

    }
 }

我不知道为什么在方法的“.get.addOnCompleteListener”行中退出而不进入“onComplete”。这种方法不是我唯一的。我有另一个类似这样的例程,但一切正常。

我遇到麻烦的 Firestore 集合:

Firestore 中的集合图片

这是许可规则

service cloud.firestore {
   match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth.uid != null;
    }
  }
}

这是 StoreRoom 类。

package Models.Pojo;

 public class StoreRoom {
 private String _idRepuesto;
 private String _idFamilia;
 private String _familia;
 private String _idSubFamilia;
 private String _interno;
 private String _claveRepuesto;
 private String _descripcion;
 private String _marca;
 private String _unidadMedida;
 private String _nroParte;
 private String _nroSerie;

 public String get_idRepuesto() { return _idRepuesto;  }

 public void set_idRepuesto(String _idRepuesto) { this._idRepuesto = _idRepuesto;   }

 public String get_idFamilia() {  return _idFamilia; }

 public void set_idFamilia(String _idFamilia) { this._idFamilia = _idFamilia; }

 public String get_familia() { return _familia;   }

 public void set_familia(String _familia) { this._familia = _familia;  }

 public String get_idSubFamilia() { return _idSubFamilia;  }

 public void set_idSubFamilia(String _idSubFamilia) { this._idSubFamilia = _idSubFamilia;  }

 public String get_interno() { return _interno;  }

 public void set_interno(String _interno) {  this._interno = _interno;  }

 public String get_claveRepuesto() {  return _claveRepuesto;  }

 public void set_claveRepuesto(String _claveRepuesto) {  this._claveRepuesto = _claveRepuesto;}

 public String get_descripcion() { return _descripcion;  }

 public void set_descripcion(String _descripcion) { this._descripcion = _descripcion; }

 public String get_marca() { return _marca;}

 public void set_marca(String _marca) {this._marca = _marca; }

 public String get_unidadMedida() { return _unidadMedida; }

 public void set_unidadMedida(String _unidadMedida) { this._unidadMedida = _unidadMedida; }

 public String get_nroParte() { return _nroParte; }

 public void set_nroParte(String _nroParte) {this._nroParte = _nroParte; }

 public String get_nroSerie() {  return _nroSerie; }

 public void set_nroSerie(String _nroSerie) { this._nroSerie = _nroSerie; }

 public StoreRoom(String _idRepuesto, String _idFamilia, String _familia, String _idSubFamilia,
                  String _interno, String _claveRepuesto, String _descripcion, String _marca,
                  String _unidadMedida, String _nroParte, String _nroSerie) {
      this._idRepuesto = _idRepuesto;
      this._idFamilia = _idFamilia;
      this._familia = _familia;
      this._idSubFamilia = _idSubFamilia;
      this._interno = _interno;
      this._claveRepuesto = _claveRepuesto;
      this._descripcion = _descripcion;
      this._marca = _marca;
      this._unidadMedida = _unidadMedida;
      this._nroParte = _nroParte;
      this._nroSerie = _nroSerie;
 }    

}

标签: androidfirebasegoogle-cloud-firestore

解决方案


好的,我可以解决问题。

public static class StoreRoom{
      public static String NOMBRECOLECCION = "Repuestos";
      public static String IDREPUESTO = "IdRepuesto";
      public static String IDFAMILIA = "IdFamilia";
      public static String FAMILIA = "Familia";
      public static String IDSUBFAMILIA = "IdSubFamlia";
      public static String SUBFAMILIA = "SubFamilia";
      public static String INTERNO = "Interno";
      public static String CLAVEREPUESTO = "ClaveRepuesto";
      public static String DESCRIPCION = "Descripcion";
      public static String MARCA = "Marca";
      public static String UMEDIDA = "UnidadMedida";
      public static String NUMERODEPARTE = "NroParte";
      public static String NUMERODESERIE = "NroSerie";
 }

在Collection Im 的定义中丢失了一封信。我写了public static String IDSUBFAMILIA = "IdSubFamlia"; 正确的是public static String IDSUBFAMILIA = "IdSubFam i lia" ;

当我用你要求我做的事情更新帖子时,我才看到它。我为我让你失去的那段时间感到难过。对此我深表歉意。

非常感谢


推荐阅读