首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >firebase在未知uid之后从uid获取值

firebase在未知uid之后从uid获取值
EN

Stack Overflow用户
提问于 2019-06-23 17:26:39
回答 1查看 46关注 0票数 2

CABARAN是未知的Uid。它不是文本。现在我有了uid,我想要获取tajukPenuh的值。

这就是代码,但我仍然无法获得值。

代码语言:javascript
复制
FirebaseDatabase.getInstance().getReference().child("karangan").addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            if (dataSnapshot.exists()) {
                for (DataSnapshot child : dataSnapshot.getChildren()) {

                Karangan karangan = child.child(karanganID).getValue(Karangan.class);

                if (karangan != null) {
                    String tajukPenuh = karangan.getTajukPenuh();

                    holder.getTextViewKaranganID().setText("Karangan Tajuk: " + tajukPenuh);

                }
            }

        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {

    }
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-23 22:59:26

从理论上讲,您可以执行如下查询:

代码语言:javascript
复制
FirebaseDatabase.getInstance().getReference().child("karangan")
  .orderByChild("-LYgFIl4Xiv_Ls51Slvh/uid").equalTo("-LYgFIl4Xiv_Ls51Slvh")
  .addListenerForSingleValueEvent(new ValueEventListener() {

但问题是,您的规则中需要大量的索引,这在技术上可能是可行的,但在大多数实际应用中是不可行的。

您当前的数据结构使得查找CABARAN的所有子节点变得很容易,但是查找给定子节点的CABARAN并非易事。为了允许该用例高效运行,您应该使用所谓的反向索引扩展您的数据结构,该索引从您知道的值映射回CABARAN。所以就像这样:

代码语言:javascript
复制
"myIndex": {
  "-LYgFIl4Xiv_Ls51Slvh": "CABARAN",
  "-LzfFIl4Xasas51Slads": "CABARAN",
  "-Lasddas981398asdh1h": "CASITWO"
}

这是一个额外的数据结构,在编写其余数据时必须保持最新。但是有了这种结构,现在就很容易确定-LYgFIl4Xiv_Ls51Slvh映射到CABARAN了。

有关这方面的更多信息,请参阅我的答案:Firebase query if child of child contains a value

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56722579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档