हैलो, मैं इस त्रुटि के साथ हूं और मैं उपयोगकर्ता के नोड> ईमेल को पकड़ने और लिखने की कोशिश कर रहा हूं लेकिन फिर भी त्रुटि दे रहा हूं, क्या कोई मेरी मदद कर सकता है? किसी भी मदद का स्वागत है। नोड ईमेल में पहले से ही अल्पविराम है लेकिन जब ठीक होने की बात आती है तो मुझे अभी भी त्रुटि मिलती है मैं नीचे दिए गए कोड के साथ नोड को संशोधित करने का प्रयास कर रहा हूं।
मेरा कोड
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();
}
}
});
3 जवाब
उपयोगकर्ता के विवरण के लिए ईमेल को मूल नोड के रूप में उपयोग करने के बजाय, userId
का उपयोग करना बेहतर है:
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String userId = user.getUid();
ref.child("users").child(userId).addListenerForSingleValueEvent(/* ... */);
ईमेल को पथ के रूप में संग्रहीत करते समय, मैं आपको ईमेल को एन्कोड करने की सलाह देता हूं, यानी 'डॉट्स' को 'कॉमा' से बदल दें। यदि आप पुनः प्राप्त करना चाहते हैं, तो आप डीकोड कर सकते हैं।
public static String decodeString(String string) {
return string.replace(",", ".");
}
user.setEmail(account.getEmail());
से पहले आप केवल स्ट्रिंग को डीकोड करें और फिर सेट के बाद।
कोड की इन तीन पंक्तियों में:
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");
संबंधित सवाल
नए सवाल
android
एंड्रॉइड Google का मोबाइल ऑपरेटिंग सिस्टम है, जिसका उपयोग प्रोग्रामिंग या डिजिटल डिवाइस (स्मार्टफोन, टैबलेट, ऑटोमोबाइल्स, टीवी, वियर, ग्लास, IoT) को विकसित करने के लिए किया जाता है। एंड्रॉइड से संबंधित विषयों के लिए, एंड्रॉइड-विशिष्ट टैग जैसे कि एंड्रॉइड-इरादे, एंड्रॉइड-गतिविधि, एंड्रॉइड-एडॉप्टर आदि का उपयोग करें। विकास या प्रोग्रामिंग के अलावा अन्य प्रश्नों के लिए, लेकिन एंड्रॉइड फ्रेमवर्क से संबंधित हैं, इस लिंक का उपयोग करें: https: // android.stackexchange.com।
user.getEmail().replace(".",",")
चेक करें, जैसा कि आप पहले से ही कर रहे हैं, लॉग ऑन करें और चेक करें