В Android Studio, используя Firebase Realtime Database и Kotlin, чтобы получить значение узла, вы получите следующий код:
val parentNodePath: String = "nodeParentPath"
val nodePath: String = "nodePath"
val nodeRef = FirebaseDatabase.getInstance().reference.child(parentNodePath)
var value: Int
nodeRef.addListenerForSingleValueEvent(object : ValueEventListener{
override fun onDataChange(dS: DataSnapshot) {
value = dS.child(nodePath).getValue(Int::Class.java)!!
//or also
//value = dS.child(nodePath).value as Int
}
override fun onCancelled(dE: DatabaseError) {}
})
Было бы нормально определить расширение функция, которая реализует перегрузку оператора get
для получения значения в пути, и было бы лучше использовать ключевое слово inline
, поэтому при запуске ей не нужно вызывать функцию, а вместо этого она вставляется внутрь код?
/*inline*/ operator fun DataSnapshot.get(path: String): Any? =
this.child(path).value
Будет использоваться как value = dS[nodePath] as Int