【问题标题】:I am unable to getValue() from a child in Firebase我无法从 Firebase 中的孩子那里获取值()
【发布时间】:2022-09-27 19:13:42
【问题描述】:
我是 Android 和 Firebase 的新手。我试图从 Firebase 中获取一个字符串并将其与给定的字符串进行比较。
现在,当我使用 getValue() 时,它显示 \"Cannot resolve method \'getValue\' in \'DatabaseReference\'\"
这是我的数据库的结构
这里节点 \"user1\" 后面的名称会改变,所以我正在细化数据库直到 user1
应用程序每次创建新文件夹时,都会在 user1 中创建一个具有相同结构的新节点
现在,我想将节点 \"AmazonLink\" 中的每个字符串与给定的字符串进行比较
这是我的代码
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference(\"Users/user1\");
else if(databaseReference.child(\"AmazonLink\").getValue().equals(amazonLink.getText()))
标签:
java
android
firebase
google-cloud-platform
firebase-realtime-database
【解决方案1】:
DatabaseReference#child(String pathString) 方法,返回DatabaseReference 类型的对象。如您所见,这个类中没有getValue()。但是,DataSnapshot 类包含 getValue()。
因此,为了根据特定值检查实时数据库中字段的值,您必须执行查询并附加如下列表:
DatabaseReference db = FirebaseDatabase.getInstance().getReference();
DatabaseReference userOneRef = db.child("Users/user1");
Query query = userOneRef.orderByChild("AmazonLink").equalTo(amazonLink.getText());
productsRef.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
@Override
public void onComplete(@NonNull Task<DataSnapshot> task) {
if (task.isSuccessful()) {
for (DataSnapshot ds : task.getResult().getChildren()) {
String amazonLink = ds.child("AmazonLink").getValue(String.class);
Log.d("TAG", amazonLink);
}
} else {
Log.d("TAG", task.getException().getMessage()); //Never ignore potential errors!
}
}
});
请参阅我现在使用的DataSnapshot#getValue(Class valueType),它确实允许我以字符串格式读取字段的数据。