簡體   English   中英

firebase 實時數據庫推送無限循環錯誤

[英]firebase realtime database push infinite loop error

我正在使用 firebase 身份驗證和 email 和密碼。

所以我想將用戶數據保存在實時數據庫中。 但是當我將數據推送到數據庫時,正在執行無限循環。

我不知道為什么..我想保存這種形式的數據並繼續保存。

但是當我開始時,無限循環正在開始

在此處輸入圖像描述

       private void createUser(String email, String password,String name, String phone, String 
   nickname) {
    firebaseAuth.createUserWithEmailAndPassword(email, password)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {


                    if (task.isSuccessful()) {    //Join Success


                        Toast.makeText(JoinActivity.this, "Join Success", Toast.LENGTH_SHORT).show();
                        mDatabase.addValueEventListener(new ValueEventListener() {

                            @Override
                            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                                if(firebaseAuth.getCurrentUser()!=null) {
                                String email=editTextEmail.getText().toString().trim();
                                FirebaseUser user=firebaseAuth.getCurrentUser();

                                String uid=user.getUid();
                                if(dataSnapshot.child("USER").child("user_info").child(uid).exists()){
                                    Toast.makeText(JoinActivity.this,"already exist",Toast.LENGTH_SHORT).show();
                                }else{


                                                   User user_info = new User(uid, editTextId.getText().toString(), editTextEmail.getText().toString(), editTextPassword.getText().toString(),
                                                           editTextname.getText().toString(), editTextNickname.getText().toString(), editTextPhone.getText().toString());

                                                   //delete all data
                                                    mDatabase.setValue(null);
                                                   String key = mDatabase.child("USER").push().getKey();
                                                 //  mDatabase.child("USER").child("user_info").child(key).setValue(user_info);
                                                   Toast.makeText(JoinActivity.this, "save the data", Toast.LENGTH_SHORT).show();
                                               }
                                }

                            }

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

                            }
                        });
                        Intent intent = new Intent(JoinActivity.this, MainActivity.class);
                        startActivity(intent);

                    } else {  //already exists
                        Toast.makeText(JoinActivity.this, "already exists", Toast.LENGTH_SHORT).show();
                        return;
                    }
                }

            });
}

}

代替:

mDatabase.addValueEventListener(new ValueEventListener() {

使用以下內容:

mDatabase.addListenerForSingleValueEvent(new ValueEventListener() {

這樣,您將只檢索一次數據。

暫無
暫無

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

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