Android 在密钥firebase中获取密钥

Android 在密钥firebase中获取密钥,android,firebase,firebase-realtime-database,firebase-authentication,firebase-security,Android,Firebase,Firebase Realtime Database,Firebase Authentication,Firebase Security,我的firebase数据库中有客户数据以以下格式存储 { "fEYfwd8p9oSGAF6iUtXDLkMBCqc2" : { //user id "-KdLAGG-8VOMd62Noyc8" : { //customer id "customerCode" : "shi", "customerLimit" : "2569", "customerName" : "Shishir" }, "-KdOraGISFJ6epjWucfh"

我的
firebase
数据库中有客户数据以以下格式存储

{
  "fEYfwd8p9oSGAF6iUtXDLkMBCqc2" : { //user id
    "-KdLAGG-8VOMd62Noyc8" : { //customer id
      "customerCode" : "shi",
      "customerLimit" : "2569",
      "customerName" : "Shishir"
    },
    "-KdOraGISFJ6epjWucfh" : { //customer id
      //other cust details
    }
  },
  "jxW41BgSNWdRPyWtUkZA2G0eLhf2" : { //user id
    "-KdCgJKh6_Rb8MOi-fIj" : {
      "customerCode" : "Kau",
      "customerLimit" : "800",
      "customerName" : "Kaushik"
    },
    "-KdCgacTYBkThnVWe4sb" : {
      //other cust details
    },
    "-KdCggxld52mq0DsGRjH" : {
      //other cust details
    },
    "-KdChbdoV7nxwZoGLWsY" : {
      //other cust details
    }
  }
}
在我的android应用程序中,我试图在为客户创建其他详细信息之前检查客户代码是否存在,下面是我是如何做到的

DatabaseReference dbRef=FirebaseDatabase.getInstance().getReference("customers")
                       .child(FirebaseAuth.getInstance().getCurrentUser().getUid());
dbRef.orderByChild("customerCode").equalTo(code).addListenerForSingleValueEvent(new ValueEventListener() {
       @Override
       public void onDataChange(DataSnapshot snapshot) {
           if (!snapshot.exists()) {
               editTextAC.setText("");
               editTextAC.setError("Customer code not found in database.");
           } else {
               //need to get customer id here.
           }
       }
       @Override
       public void onCancelled(DatabaseError dbError) {
            Toast.makeText(activity, dbError.getMessage(), Toast.LENGTH_SHORT).show();
       }
});
我正在以下面的格式获取快照中的数据

{
    key = jxW41BgSNWasdsaRPsdyaWtUkZA2G0eLhf2,
    value = {-KdChbdoV7nfdasxwZoGLWsY = {
                customerCode = Ses,
                customerLimit = 78888,
                customerName = Sheshu
            }
    }
}

我需要从上面的
获取客户Id。我试着做了
snapshot.getKey()
,它检索第一级
key
,即
jxW41BgSNWasdsaRPsdyaWtUkZA2G0eLhf2
,当我说
snapshot.getValue()
时,它将
作为字符串检索。如何从上面获取客户Id?

尝试
for(字符串customerId:snapshot.getValue()){//print customerId}
。我可以用iOS来做,但我不确定它是否能用androidA来做。。我确信每次我都会得到单个数据,因为customerCode在这里是唯一的。。那么我需要在这里使用
for
循环吗?在您的数据中,我看到
用户id中有许多
客户id
,因此您需要for loopNo。。如果您看到该代码,那么我将根据登录的用户id获取客户代码。。因此,对于每个用户id,客户代码都是唯一的。。所以我很确定只会提取一个数据。现在我理解了你的问题,但我以前没有面对过。请尝试
DataSnapshot child=snapshot.getValue();字符串key=child.getKey()
;好的,兄弟。。似乎很有希望。。让我试试这个,让你知道……)
for (DataSnapshot child : snapshot.getChildren()) {
    Log.i("TAG", "child key = " + child.getKey());
}
DatabaseReference dbRef=FirebaseDatabase.getInstance().getReference("customers")
                   .child(FirebaseAuth.getInstance().getCurrentUser().getUid());dbRef.orderByChild("customerCode").equalTo(code).addListenerForSingleValueEvent(new ValueEventListener() {
   @Override
   public void onDataChange(DataSnapshot snapshot) {
       if (!snapshot.exists()) {
           editTextAC.setText("");
           editTextAC.setError("Customer code not found in database.");
       } else {
             for (DataSnapshot child : snapshot.getChildren()) {
               Log.e("Customer_id",child.getKey());}
       }
   }
   @Override
   public void onCancelled(DatabaseError dbError) {
        Toast.makeText(activity, dbError.getMessage(), Toast.LENGTH_SHORT).show();
   }});