通过搜索子值firebase android获取列表中的uid

时间:2018-08-27 09:15:22

标签: java android arrays firebase firebase-realtime-database

{
  "Mp6FLLdcSeXpfGPwP5i0ZBNZxd63" : {
    "Age" : "20",
    "Full name" : "Mike",
    "Intent" : "Both",
    "Reward" : "Nothing ",
    "Variablex" : "one name",
    "imageuri" : "images/Mp6FLLdcSeXpfGPwP5i0ZBNZxd63.jpeg"
  },
  "fWJcCPF16dUMKn1Sxz01VjF9Kgq2" : {
    "Age" : "19",
    "Full name" : "Other guy",
    "Intent" : "Looking for help",
    "Reward" : "nothing ",
    "Variablex" : "one name",
    "imageuri" : "images/fWJcCPF16dUMKn1Sxz01VjF9Kgq2"
  }
}

这是我的数据库。我想让所有用户具有相同的variablex。但是我只想要ID,父节点。我基本上想建立一个数组,其中包含其子值variablex相同的用户的所有id。然后使用此数组一次调用一个用户以获取ID,并使用ID执行其他任务。

public void othershit() {

    Query qname3 = mDatabase.child("Variablex").orderByChild("Variablex").equalTo(userinput);
    qname3.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            GenericTypeIndicator<List<String>> t = new GenericTypeIndicator<>();
            List users = dataSnapshot.getValue(t);
            textView8.setText(users.get(0).toString());
        }

使用按钮触发该事件,但每次崩溃时。我也有三个用户具有相同的variablex。结构是相同的,这是我的数据库有点过时的版本,但是本质上是相同的。

1 个答案:

答案 0 :(得分:0)

尝试使用

this.service.data().subscribe(
     data => {
        this.params = JSON.parse(JSON.stringify(data));
        this.originalParams = JSON.parse(JSON.stringify(data));
     }
);

要检索找到的节点(在您的情况下为FUID)的父键。

编辑-

假设所有数据的父节点都是用户

dataSnapshot.getKey();

因此,您需要执行以下操作以获取与所需的所有ID匹配的所有ID的列表

{
  "users" :{
"Mp6FLLdcSeXpfGPwP5i0ZBNZxd63" : {
    "Age" : "20",
    "Full name" : "Mike",
    "Intent" : "Both",
    "Reward" : "Nothing ",
    "Variablex" : "one name",
    "imageuri" : "images/Mp6FLLdcSeXpfGPwP5i0ZBNZxd63.jpeg"
  },
  "fWJcCPF16dUMKn1Sxz01VjF9Kgq2" : {
    "Age" : "19",
    "Full name" : "Other guy",
    "Intent" : "Looking for help",
    "Reward" : "nothing ",
    "Variablex" : "one name",
    "imageuri" : "images/fWJcCPF16dUMKn1Sxz01VjF9Kgq2"
  }
}
}