获取firebase android中特定值的推送ID

新手上路,请多包涵

当我像下一个一样将值推送到它时,我想检索由firebase生成的id

火力基地

我想为我通过getKey()尝试的那封电子邮件检索“-KGdKiPSODz7JXzlgl9J”这个id,但它返回“users”,当用户获得价值时,它将整个对象从id返回到个人资料图片,这不会让我得到它作为我的应用程序中的用户对象

如何解决这个问题?

     Firebase users = myFirebaseRef.child("users");
    users.orderByChild("email").equalTo("z@m.com").addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            dataSnapshot.getKey();
            Log.d("User",dataSnapshot.getRef().toString());
            Log.d("User",dataSnapshot.getValue().toString());
        }

        @Override
        public void onCancelled(FirebaseError firebaseError) {

            Log.d("User",firebaseError.getMessage() );
        }
    });

原文由 Sattar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 759
2 个回答

更新1:它也可以通过一行获得

> String key = mDatabase.child("posts").push().getKey();
>
> ```

//\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*//

在搜索并尝试了很多事情之后,我找到了两种方法来做到这一点。 1.当我通过此功能将帖子上传到服务器时,第一个获得密钥

public void uploadPostToFirebase(Post post) { DatabaseReference mFirebase = mFirebaseObject .getReference(Constants.ACTIVE_POSTS_KEY) .child(post.type); mFirebase.push().setValue(post); Log.d(“Post Key” , mFirebase.getKey()); }


1. 在我已经将它推送到我的数据库中的节点之后,我在我的代码中使用它来获取密钥


public void getUserKey(String email) {

   Query queryRef = databaseRef.child(Constants.USERS_KEY)
       .orderByChild(Constants.USERS_EMAIL)
       .equalTo(email);

   queryRef.addChildEventListener(new ChildEventListener() {
     @Override
     public void onChildAdded(DataSnapshot dataSnapshot, String s) {
       //TODO auto generated
     }

     @Override
     public void onChildChanged(DataSnapshot dataSnapshot, String s) {
       //TODO auto generated;
     }

     @Override
     public void onChildRemoved(DataSnapshot dataSnapshot) {
       //TODO auto generated;
     }

     @Override
     public void onChildMoved(DataSnapshot dataSnapshot, String s) {
       //TODO auto generated
     }

     @Override
     public void onCancelled(DatabaseError databaseError) {
       //TODO auto generated
     }
 });
}

”`

原文由 Sattar 发布,翻译遵循 CC BY-SA 3.0 许可协议

是的,您可以通过在特定子节点中添加节点或主子节点名称作为键和值 {main_child_name} 来检索节点或主子节点名称。

原文由 Vigneshwar A S 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题