i有 customers 在我的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
}
}
}
我需要从上面的value
获取客户ID。我尝试执行snapshot.getKey()
检索第一级key
即jxW41BgSNWasdsaRPsdyaWtUkZA2G0eLhf2
,而当我说snapshot.getValue()
时,将value
检索为字符串。我将如何从上方获取客户ID?
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();
}});