android Firebase 查询 - 对 (pushid) 的引用?

android Firebase query- reference to (pushid )?

请帮忙 这是我的 firebase 结构

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);

您可以使用 '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
                        }
                    }
         }