简单Android/Firebase orderByChild/equalTo

简单Android/Firebase orderByChild/equalTo,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我怀疑这很容易,但我不能让它按我想要的方式工作。我正在使用我的Firebase数据库的查询信息引用数据库引用。下面的代码运行良好,但我无法在Match_01中硬编码(这纯粹是为了让代码正常工作) 我需要做的是使用传递给片段的matchID,并使用equalTo,而不是引用最后一个子节点 final DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("Matches").orderByChild("g

我怀疑这很容易,但我不能让它按我想要的方式工作。我正在使用我的Firebase数据库的查询信息引用数据库引用。下面的代码运行良好,但我无法在Match_01中硬编码(这纯粹是为了让代码正常工作)

我需要做的是使用传递给片段的matchID,并使用equalTo,而不是引用最后一个子节点

final DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("Matches").orderByChild("gameID").equalTo(getArgument);
但这不起作用,我无法将最后一个子引用替换为orderByChild引用


非常感谢您的帮助。

根据您的问题,我假设
匹配的节点的子节点具有您希望动态引用为密钥的id

然后,您需要
orderByKey
而不是
orderByChild
。这应该起作用:

final DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Matches");
Query q=ref.orderByKey().equalTo(getArgument);
使用
orderByChild
时,查询将根据此节点的属性匹配节点。换句话说,您的尝试将使用以下结构的集合:

- Matches
  - $key
    - gameID: "Match_01"

它不断抛出错误;错误:(70,33)错误:不兼容类型:查询无法转换为数据库引用。现在,我编辑了答案VonD以修复错误。这很好,但我的错误是,我调用了一个事务块,这就是为什么我试图通过在同一行上传递查询来链接我的DB ref;final DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child(“匹配”);查询q=ref.orderByChild(“gameID”).equalTo(getArgument);ref.runTransaction(新事务处理程序(){
- Matches
  - $key
    - gameID: "Match_01"