我正在研究 Firebase 数据库。如何根据用户在文本字段中输入的电子邮件从数据库中检索值。下面是我的数据库结构。请帮忙。
这是我的代码:
Ref = database.getReference("Registeration");
Ref.orderByChild("UserRegistration/email").equalTo(emailval).addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
user_reg user=dataSnapshot.getValue(user_reg.class);
Toast.makeText(getApplicationContext(), user.toString(), Toast.LENGTH_SHORT).show();
}
你有:
Registration
UserRegistration
12
pushid
key:values
email:emailvalue
要始终检索值,您必须从上到下,因此您不能跳过任何节点。
Only orderByChild(..)
查询可以跳过一个节点(这意味着如果您想获取不是直接子节点的子节点,则可以使用此查询)
尝试这个:
DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("Registration").child("UserRegistration").child("12");
ref.orderByChild("email").equalTo(emailenteredbyuser).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot datas : dataSnapshot.getChildren()) {
String email=datas.child("email").getValue().toString();
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
正如您在上面看到的,引用会遍历每个节点,直到节点12
.
然后你用这个orderByChild("email").equalTo(emailenteredbyuser)
获取用户输入的电子邮件。
for (DataSnapshot datas : dataSnapshot.getChildren())
这个 for 循环datas
在其直接子代内部进行迭代12
这是pushid,这样您就不需要检索pushid 来获取其中的值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)