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

Database structure

मुझे फायरबेस में डेटा मिला है:

डेटाबेस पंक्ति वर्ग:

data class DatabaseRow (
    val id:String = "",
    val names: String= "",
    val lastname: String="",
    val day: String="",
    val month: String="",
    val year:String=""
)

फायरबेस इनपुट:

 val firebaseInput = DatabaseRow(user,names,lastname,day,month,year)
        userRef.child("$user").setValue(firebaseInput)

डेटा पुनर्प्राप्त करने के लिए मैं इस कोड का उपयोग कर रहा हूं:

  auth = FirebaseAuth.getInstance()
        FirebaseUser = auth.getCurrentUser()!!

        val uid = auth.getUid()!!

        val fireBase = FirebaseDatabase.getInstance()
        userRef = fireBase.getReference("users")
        val ordersRef = userRef.child("$uid").equalTo("$uid")


val valueEventListener = object : ValueEventListener {
            override fun onDataChange(dataSnapshot: DataSnapshot) {
                for (ds in dataSnapshot.children) {
                    val username = ds.child("day").getValue(String::class.java)
                    Log.d("DataBaseGetName",username)
                    this@Main2Activity.testTextView.text = username 
                }
            }

            override fun onCancelled(databaseError: DatabaseError) {
                Log.d("Data", databaseError.getMessage()) //Don't ignore errors!
            }
        }
   ordersRef.addValueEventListener(valueEventListener)

वह डेटाबेस नियम हैं:

{
  "rules": {
      ".read": true,
      ".write": true,
         "users":{
            "$uid":{
               ".write": "auth.uid === $uid",
               ".read": "auth.uid === $uid"
               },     
    "users":{
        ".indexOn": [".value","id","names","lastname","day","month","year"]
    },
   }
  }  
}  
1
AzCodeDevelopment 22 जिंदा 2020, 17:54

1 उत्तर

सबसे बढ़िया उत्तर

जब आप uid प्राप्त कर रहे हों, तो आप इसकी तुलना डेटाबेस uid से करने का प्रयास कर रहे हैं। uid हमेशा अलग होता है।

val ordersRef = userRef.child("$uid")
val valueEventListener = object : ValueEventListener {
    override fun onDataChange(dataSnapshot: DataSnapshot) {
        val username = dataSnapshot.child("names").getValue(String.class);
        Log.d("DataBaseGetName",username)
    }

    override fun onCancelled(databaseError: DatabaseError) {
        Log.d("Data", databaseError.getMessage()) //Don't ignore errors!
    }
}
ordersRef.addValueEventListener(valueEventListener)
3
Alex Mamo 23 जिंदा 2020, 09:38