हैलो, मैं इस त्रुटि के साथ हूं और मैं उपयोगकर्ता के नोड> ईमेल को पकड़ने और लिखने की कोशिश कर रहा हूं लेकिन फिर भी त्रुटि दे रहा हूं, क्या कोई मेरी मदद कर सकता है? किसी भी मदद का स्वागत है। नोड ईमेल में पहले से ही अल्पविराम है लेकिन जब ठीक होने की बात आती है तो मुझे अभी भी त्रुटि मिलती है मैं नीचे दिए गए कोड के साथ नोड को संशोधित करने का प्रयास कर रहा हूं।

मेरा कोड

 addButton.setOnClickListener(new View.OnClickListener() {
        DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
        @Override
        public void onClick(View v) {
            final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
            final String userUid = user.getEmail();

            final DatabaseReference ref = FirebaseDatabase.getInstance().getReference();

            ref.child("users").child(user.getEmail().replace(".",",")).addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    for (DataSnapshot ds : dataSnapshot.getChildren()) {


                        Map<String,Object> map = new HashMap<>();
                        map.put("cassinotime",dataSnapshot.child("cassinotime").getValue(String.class));
                        map.put("cassinoprofit",dataSnapshot.child("cassinoprofit").getValue(String.class));


                        ref.child("users").child(user.getEmail()).child("cassino").child("cassinotime").setValue(map);
                        ref.child("users").child(user.getEmail()).child("cassino").child("cassinotime").setValue("50000");
                        ref.child("users").child(user.getEmail()).child("cassino").child("cassinoprofit").setValue("250");


                    }
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });
        }

रजिस्टर कोड

private void firebaseAuthWithGoogle(final GoogleSignInAccount account) {
        AuthCredential credential = GoogleAuthProvider.getCredential(account.getIdToken(), null);
        mAuth.signInWithCredential(credential)
                .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (task.isSuccessful()) {

                            User user = new User(


                            );
                            String photoUrl = null;
                            if (account.getPhotoUrl() != null) {
                                user.setPhotoUrl(account.getPhotoUrl().toString());
                            }

                            user.setEmail(account.getEmail());
                            user.setUser(account.getDisplayName());
                            user.setUid(mAuth.getCurrentUser().getUid());
                            user.setMoney(money);
                            user.setCassinotime(cassinotime);
                            user.setCassinoprofit(cassinoprofit);

                            FirebaseUtils.getUserRef(account.getEmail().replace(".", ","))
                                    .setValue(user, new DatabaseReference.CompletionListener() {
                                        @Override
                                        public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
                                            mFirebaseUser = mAuth.getCurrentUser();
                                            finish();
                                        }
                                    });
                        } else {
                            dismissProgressDialog();
                        }
                    }
                });
0
Upz91 14 मार्च 2020, 10:21
आपको अपने डेटाबेस के नाम से इस वर्ण को हटा देना चाहिए
 – 
MMG
14 मार्च 2020, 10:26
क्या आपने मैन्युअल रूप से "उपयोगकर्ता" डेटा को फायरबेस में आयात किया है?
 – 
Hritik Gupta
14 मार्च 2020, 10:27
मैंने इसे मैन्युअल रूप से नहीं भेजा था।
 – 
Upz91
14 मार्च 2020, 10:31
@ Upz91, user.getEmail().replace(".",",") चेक करें, जैसा कि आप पहले से ही कर रहे हैं, लॉग ऑन करें और चेक करें
 – 
ॐ Rakesh Kumar
14 मार्च 2020, 10:32
ईमेल में .com नहीं है, कॉम
 – 
MMG
14 मार्च 2020, 10:35

3 जवाब

उपयोगकर्ता के विवरण के लिए ईमेल को मूल नोड के रूप में उपयोग करने के बजाय, userId का उपयोग करना बेहतर है:

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String userId = user.getUid();
ref.child("users").child(userId).addListenerForSingleValueEvent(/* ... */);
2
Alex Mamo 14 मार्च 2020, 15:50

ईमेल को पथ के रूप में संग्रहीत करते समय, मैं आपको ईमेल को एन्कोड करने की सलाह देता हूं, यानी 'डॉट्स' को 'कॉमा' से बदल दें। यदि आप पुनः प्राप्त करना चाहते हैं, तो आप डीकोड कर सकते हैं।

public static String decodeString(String string) {
        return string.replace(",", ".");
    }
1
Ali 14 मार्च 2020, 10:40
मुझे नहीं लगता कि आपने स्क्रीनशॉट पर ध्यान दिया है, इसमें पहले से ही अल्पविराम है।
 – 
Upz91
14 मार्च 2020, 10:30
क्या यह ईमेल आपके द्वारा भेजा जाता है, है ना?
 – 
Ali
14 मार्च 2020, 10:32
हाय उत्तर के लिए धन्यवाद। संपादित मेरी पोस्ट की जाँच करें। मैं Google प्रमाणीकरण के माध्यम से उपयोगकर्ता पंजीकरण कैसे कर रहा हूँ।
 – 
Upz91
14 मार्च 2020, 10:39
user.setEmail(account.getEmail()); से पहले आप केवल स्ट्रिंग को डीकोड करें और फिर सेट के बाद।
 – 
Ali
14 मार्च 2020, 10:40

कोड की इन तीन पंक्तियों में:

ref.child("users").child(user.getEmail()).child("cassino").child("cassinotime").setValue(map);
ref.child("users").child(user.getEmail()).child("cassino").child("cassinotime").setValue("50000");
ref.child("users").child(user.getEmail()).child("cassino").child("cassinoprofit").setValue("250");

आप अभी भी मूल user.getEmail() मान का उपयोग कर रहे हैं। आपको एन्कोडेड स्ट्रिंग का उपयोग करना चाहिए जैसे आपने क्वेरी में किया था। बस इसे एक बार करें और इसे एक वेरिएबल में स्टोर करें, फिर वेरिएबल का पुन: उपयोग करें।

इससे भी बेहतर, बस एक बार संदर्भ बनाएं और उसका पुन: उपयोग करें:

final DatabaseReference ref = FirebaseDatabase.getInstance()
    .getReference()
    .child("user")
    .child(user.getEmail().replace(".",","));

फिर कॉलबैक में:

ref.child("cassino").child("cassinotime").setValue(map);
ref.child("cassino").child("cassinotime").setValue("50000");
ref.child("cassino").child("cassinoprofit").setValue("250");
1
Doug Stevenson 14 मार्च 2020, 10:45