Android Studio - 如何从 FireBase 实时数据库中获取价值
Android Studio - How to get value from FireBase Realtime Database
我想从 Firebase 实时数据库获取数据。
Here is my database format
我正在尝试通过提供用户的电子邮件来访问“创建者”的值。
例如:
对于输入cc@cc@cc我会得到false。
对于输入tt@tt@tt我会得到真实的。
这是我的代码:
String key = emailEditText.getText().toString().replace(".","@");
myRef.child("Users").child(key).child("creator").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
try {
for (DataSnapshot postsnapshot : snapshot.getChildren()) {
if(postsnapshot.getValue().equals(true)){
startActivity(new Intent(LoginActivity.this,CreatorActivity.class));
}
else
startActivity(new Intent(LoginActivity.this,WelcomeActivity.class));
}
*关键是输入邮箱。
String email = "cc@cc.cc";
DatabaseReference db = FirebaseDatabase.getInstance().getReference();
DatabaseReference usersRef = db.child("Users");
Query queryByEmail = usersRef.orderByChild("email").equalTo(email);
queryByEmail.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
@Override
public void onComplete(@NonNull Task<DataSnapshot> task) {
if (task.isSuccessful()) {
for (DataSnapshot ds : task.getResult().getChildren()) {
boolean creator = ds.child("creator").getValue(Boolean.class);
Log.d("TAG", "creator: " + creator);
}
} else {
Log.d("TAG", task.getException().getMessage()); //Don't ignore potential errors!
}
}
});
logcat 中的结果将是:
creator: false
但是,如果您将电子邮件更改为:
String email = "tt@tt.tt";
logcat 中的结果将是:
creator: true
此解决方案适用于数据库中的多个节点。如果您只想检查一个,请使用以下代码行:
String email = "cc@cc@cc";
DatabaseReference db = FirebaseDatabase.getInstance().getReference();
DatabaseReference creatorRef = db.child("Users").child(email).child("creator");
creatorRef.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
@Override
public void onComplete(@NonNull Task<DataSnapshot> task) {
if (task.isSuccessful()) {
DataSnapshot snapshot = task.getResult()
boolean creator = snapshot.getValue(Boolean.class);
Log.d("TAG", "creator: " + creator);
} else {
Log.d("TAG", task.getException().getMessage()); //Don't ignore potential errors!
}
}
});
logcat 中的结果将是:
creator: false
但是,如果您将电子邮件更改为:
String email = "tt@tt@tt";
logcat 中的结果将是:
creator: true
我想从 Firebase 实时数据库获取数据。
Here is my database format
我正在尝试通过提供用户的电子邮件来访问“创建者”的值。
例如:
对于输入cc@cc@cc我会得到false。
对于输入tt@tt@tt我会得到真实的。
这是我的代码:
String key = emailEditText.getText().toString().replace(".","@");
myRef.child("Users").child(key).child("creator").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
try {
for (DataSnapshot postsnapshot : snapshot.getChildren()) {
if(postsnapshot.getValue().equals(true)){
startActivity(new Intent(LoginActivity.this,CreatorActivity.class));
}
else
startActivity(new Intent(LoginActivity.this,WelcomeActivity.class));
}
*关键是输入邮箱。
String email = "cc@cc.cc";
DatabaseReference db = FirebaseDatabase.getInstance().getReference();
DatabaseReference usersRef = db.child("Users");
Query queryByEmail = usersRef.orderByChild("email").equalTo(email);
queryByEmail.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
@Override
public void onComplete(@NonNull Task<DataSnapshot> task) {
if (task.isSuccessful()) {
for (DataSnapshot ds : task.getResult().getChildren()) {
boolean creator = ds.child("creator").getValue(Boolean.class);
Log.d("TAG", "creator: " + creator);
}
} else {
Log.d("TAG", task.getException().getMessage()); //Don't ignore potential errors!
}
}
});
logcat 中的结果将是:
creator: false
但是,如果您将电子邮件更改为:
String email = "tt@tt.tt";
logcat 中的结果将是:
creator: true
此解决方案适用于数据库中的多个节点。如果您只想检查一个,请使用以下代码行:
String email = "cc@cc@cc";
DatabaseReference db = FirebaseDatabase.getInstance().getReference();
DatabaseReference creatorRef = db.child("Users").child(email).child("creator");
creatorRef.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
@Override
public void onComplete(@NonNull Task<DataSnapshot> task) {
if (task.isSuccessful()) {
DataSnapshot snapshot = task.getResult()
boolean creator = snapshot.getValue(Boolean.class);
Log.d("TAG", "creator: " + creator);
} else {
Log.d("TAG", task.getException().getMessage()); //Don't ignore potential errors!
}
}
});
logcat 中的结果将是:
creator: false
但是,如果您将电子邮件更改为:
String email = "tt@tt@tt";
logcat 中的结果将是:
creator: true