【问题标题】:Simple Android / Firebase orderByChild / equalTo简单的 Android / Firebase orderByChild / equalTo
【发布时间】:2018-08-14 18:05:11
【问题描述】:

我怀疑这很容易,但我无法让它按我的意愿工作。我正在使用我的 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 引用。

感谢所有帮助。

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案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"
    

    【讨论】:

    • 一直报错;错误:(70, 33) 错误:不兼容的类型:查询无法转换为 DatabaseReference
    • 现在试试,我已经编辑了答案 VonD 来修复错误
    • 这很好用,但我的不好,我称之为事务块,这就是为什么我试图通过在同一行传递查询来将我的数据库引用链接在一起; final DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Matches");查询 q=ref.orderByChild("gameID").equalTo(getArgument); ref.runTransaction(new Transaction.Handler() {
    猜你喜欢
    • 2017-08-22
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多