【问题标题】:How can i get this id?我怎样才能得到这个ID?
【发布时间】:2018-08-14 22:45:00
【问题描述】:

我不想让它成为 key 和 value ,我已经尝试了很多来找到解决方案,但我做不到

当我尝试通过键和值获取它时,这是我的代码

mFriendID = (DatabaseReference) FirebaseDatabase.getInstance().getReference().child("friends").child(current_user).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            fri_id = dataSnapshot.child("fri_id").getValue().toString();
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

【问题讨论】:

  • 明确说明您遇到的错误是什么?
  • 请添加您的数据库结构并指明您想要获取的确切 ID。
  • 请显示插入值的代码

标签: java android firebase firebase-realtime-database


【解决方案1】:

要获得突出显示的键,请使用以下代码:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("friends").child(uid);
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String key = ds.getKey();
            Log.d("TAG", key);
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {}
};
uidRef.addListenerForSingleValueEvent(valueEventListener);

【讨论】:

  • 请注意,这会有效下载friends 下的所有数据。当只需要一个孩子时,我不建议这样做。当应该使用其他解决方案时,这种策略无法扩展,并且不必要地花费开发人员的时间和金钱。
  • @DougStevenson 嗨,Doug,感谢您的评论,但您为什么说“这有效地下载了friends 下的所有数据”? uidRef 只指向一个 uid(它只有一个孩子)而不是整个 friends 节点,对吧?
  • 您看到屏幕上有一个孩子 - 但您有什么保证不会有更多?
  • @DougStevenson 是的,Doug,不能保证。在这种情况下,我将等待 OP 提供用于插入值的代码,正如 cricket_007 在他的评论中所问的那样。因此,拥有第二个 id (PRop ... nAk1) 很容易只得到一个孩子。谢谢!
猜你喜欢
  • 2022-01-06
  • 2018-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多