我怀疑这很容易,但我不能按照我的意愿去工作。我正在使用我的Firebase数据库的查询信息引用数据库引用。下面的代码工作正常,但我不能在Match_01中进行硬编码(这完全是为了让代码正常工作)。
String getArgument = getArguments().getString("matchid");
final DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("Matches").child("Match_01");
我需要做的是使用传递给片段的matchID并使用equalTo而不是引用最终的子节点。
final DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("Matches").orderByChild("gameID").equalTo(getArgument);
但这不起作用,我无法换掉orderByChild引用的最后一个子引用。
感谢所有帮助。
答案 0 :(得分:1)
我从您的问题中假设Matches
节点的孩子具有您想要动态引用的ID作为密钥。
然后,您需要orderByKey
而不是orderByChild
。这应该有效:
final DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Matches");
Query q=ref.orderByKey().equalTo(getArgument);
使用orderByChild
时,查询会根据此节点的属性匹配节点。换句话说,您的尝试将适用于具有以下结构的集合:
- Matches
- $key
- gameID: "Match_01"