【问题标题】:android Firebase query- reference to (pushid )?android Firebase 查询- 对 (pushid) 的引用?
【发布时间】:2021-07-25 13:31:35
【问题描述】:

请帮忙 这是我的火力基地结构

firebase structure

以下查询工作正常,但我必须对推送 ID“MZgPRv6xKK5isnnPTLn”进行硬编码,我不想从以下查询中对下面突出显示的值进行硬编码有没有办法获得此按键的参考?用于查询,以便我可以替换“MZgPRv6xKK5isnnPTLn”

push id hard coded

 Query lastQuery = dbr1.child("users").child(mAuth.getCurrentUser().getUid())
                    .child("-MZgPRv6xKK5isnnPTLn").child("sms").orderByKey().limitToLast(1);
            lastQuery.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dns) {
                   
                    for (DataSnapshot chl : dns.getChildren())
                    {
                        Log.d("read_last_nodes", String.valueOf(dns.child("no").getValue()));
                        
                    }
            }
}

下面是写入 Firebase 的代码

path= dbref_1.child("users").child(mAuth.getUid()).push().getKey();

dbref_1.child("users").child(mAuth.getCurrentUser().getUid()).child(path)
.child("sms").child("SMS_no_" + i).child("no").setValue(no);

【问题讨论】:

  • 为了更好地理解,您需要获取所有推送的 ID 中存在的所有 SMS 对象吗?

标签: android firebase reference push


【解决方案1】:

您可以使用“getKey()”来获取 firebase 数据库中的任何密钥。在您的情况下,要获取密钥,您必须指向硬编码的密钥,然后在返回的快照上使用 getKey。获得密钥后,您可以继续运行查询。

            DatabaseReference ref = dbr1.child("users").child(mAuth.getCurrentUser().getUid())
            ref.addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dns) {
                        if(dns.exists) {
                           String key = dns.getKey();
                           Query lastQuery = dns.child(key).child("sms").orderByKey().limitToLast(1);
                          ///rest of query logic
                        }
                    }
         }

【讨论】:

  • 谢谢,我现在遇到了另一个问题,我的数据超过 100 条记录,当我运行此查询时,它只显示第 100 条记录,我如何获得第 650 条记录,这是我列表中的最后一条记录?
  • 如果我的答案是正确的,那么标记它。无论您拥有多少条记录,“限制到最后”都会显示最后一条记录。
  • 请注意,记录首先按键排序,然后是检索到的最后一个,这可能会导致差异。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-25
相关资源
最近更新 更多