簡體   English   中英

我想從 firebase 檢索當前用戶的 ID 並將其寫入另一個節點,但它一直拒絕

[英]I want to retrieve a current user's ID from firebase and write it in another node, but it just keeps denying

所以基本上我創建了一個 String mojID ,它等於mojID的當前用戶,我想將它作為一個節點中的子項傳遞,但它說它是一個空指針異常,我已經在代碼的其他部分使用了它返回故障。

我附上了我的一些代碼。

final DatabaseReference chatRef1 = FirebaseDatabase.getInstance().getReference("ChatLista");
    chatRef1.child(mojID);
    chatRef1.child(userID);
    chatRef1.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

            if(!dataSnapshot.exists()){
                chatRef1.child("id").setValue(userID);

            }
        }

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

        }
    });

    final DatabaseReference chatRef2 = FirebaseDatabase.getInstance().getReference("ChatLista");

                chatRef2.child(userID);
                chatRef2.child(mojID);

            chatRef2.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

            if(!dataSnapshot.exists()){

                chatRef2.child("id").setValue(mojID);

            }
        }

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

        }
    }); 

然后是采用 ID 的函數:

private void ProvjeriStatus(){
    FirebaseUser user = firebaseAuth.getCurrentUser();
    if(user!=null){
        //user ulogovan
        mojID = (String)user.getUid();
    }
    //ako nije vraca na login
    else {
       startActivity(new Intent(this,login.class));
       finish();
    }
}

我什至嘗試將它轉換為您所看到的,它只是說我不需要轉換,因為它已經是一個字符串? 那為什么它返回null呢? 我想出的唯一解釋是它是一個對象而不是字符串,並且.child想要一個字符串作為參數而不是對象。

您可以通過 FirebaseUser 添加 UserId .. 您可以參考下面的代碼 .. 也許它會幫助你

 FirebaseUser currentFirebaseUser;
 DatabaseReference databaseReference;

 currentFirebaseUser = FirebaseAuth.getInstance().getCurrentUser();
 databaseReference = FirebaseDatabase.getInstance().getReference();

 databaseReference.child("Users").child(currentFirebaseUser.getUid()).child("User 
 Id").setValue(currentFirebaseUser.getUid());

如果你想從數據庫中檢索 UserId 請參考下面的代碼..

DatabaseReference myRef = database.getReference("Users");

myRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            if ((dataSnapshot.child(currentFirebaseUser.getUid()).child("UserId").getValue() == null)) {
                databaseReference.child("Users").child(currentFirebaseUser.getUid())
                        .child("UserId").setValue(currentFirebaseUser.getUid());
            } else {
                String Id= (String) dataSnapshot.child(currentFirebaseUser.getUid()).child("UserId").getValue();

            }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM