【问题标题】: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),它确实允许我以字符串格式读取字段的数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-26
      • 1970-01-01
      • 2019-05-22
      • 1970-01-01
      • 2019-04-30
      • 1970-01-01
      相关资源
      最近更新 更多