Quiero obtener los puntos y mostrárselos al propietario de esa cuenta cuando haya iniciado sesión. Intenté leer la documentación de Firebase pero no pude. Aquí está el código que uso para asignar la clave aleatoria y guardar los datos secundarios.
const autoid = firebase.database().ref("user").push().key; firebase.database().ref("user").child(autoid).set({ Email :email, Password : password, Points :"500" });
Quiero que cada vez que el usuario inicie sesión, obtenga sus puntos de la base de datos y los muestre en su perfil.
En su código, está generando una clave aleatoria y luego asignándola a una variable. Una mejor manera de hacerlo es obtener el userId de usuario y asignarlo como un ID de documentid y luego, al recuperar los datos, use el userId de usuario para obtener los datos del usuario.
Por ejemplo, para agregar los datos:
const database = firebase.database(); const user = firebase.auth().currentUser; if (user !== null) { // Add user data in collection "users" database.ref("users").child(user.uid).set({ email :email, password : password, points :"500" }) .then(() => { console.log("data successfully written!"); }) .catch((error) => { console.error("Error writing data: ", error); }); } Luego, después de que el usuario inicie sesión, puede hacer lo siguiente para recuperar points :
const database = firebase.database(); const user = firebase.auth().currentUser; if (user !== null) { let ref = database.ref("users").child(user.uid); ref.get().then((snapshot) => { if (snapshot.exists()) { console.log("data:", snapshot.val()); console.log(snapshot.val().points); } }).catch((error) => { console.log("Error getting data:", error); }); }Puedo mostrarle cómo hacerlo en Java, simplemente ajústelo a su código Kotlyn: defina la referencia que desea escuchar (arriba de onCreate):
FirebaseDatabase FBDB = FirebaseDatabase.getInstance(); DatabaseReference refUsers=FBDB.getReference("Users"); FirebaseUser user; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); user=FirebaseAuth.getInstance().getCurrentUser() refUsers.child(user.getUid()).addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { customer = dataSnapshot.getValue(Customer.class); int points = customer.getPoints(); ShowPoints(); }); } }