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();
}});