firebase-database
Base de datos FirebaseRealtime con Android
Buscar..
Añadir la base de datos en tiempo real en Android
Complete la instalación y configuración para conectar su aplicación a Firebase.
Esto creará el proyecto en Firebase.Agregue la dependencia de Firebase Realtime Database a su archivo
build.gradlenivel debuild.gradle:
compile 'com.google.firebase:firebase-database:9.2.1'
- Configurar las reglas de la base de datos de Firebase
Ahora está listo para trabajar con la base de datos en tiempo real en Android.
Por ejemplo, escribe un mensaje de Hello World en la base de datos debajo de la clave de message .
// Write a message to the database
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("message");
myRef.setValue("Hello, World!");
Usando setValue para guardar datos
El método setValue() sobrescribe los datos en la ubicación especificada, incluidos los nodos secundarios.
Puede utilizar este método para:
- Pasa los tipos que corresponden a los tipos JSON disponibles de la siguiente manera:
- Cuerda
- Largo
- Doble
- Booleano
- Mapa <Cadena, Objeto>
- Lista
- Pase un objeto Java personalizado, si la clase que lo define tiene un constructor predeterminado que no toma argumentos y tiene captadores públicos para que se asignen las propiedades.
Este es un ejemplo con un CustomObject.
Primero define el objeto.
@IgnoreExtraProperties
public class User {
public String username;
public String email;
public User() {
// Default constructor required for calls to DataSnapshot.getValue(User.class)
}
public User(String username, String email) {
this.username = username;
this.email = email;
}
A continuación, obtenga la referencia de la base de datos y establezca el valor:
User user = new User(name, email);
DatabaseReference mDatabase mDatabase = FirebaseDatabase.getInstance().getReference();
mDatabase.child("users").child(userId).setValue(user);
Ejemplo para inserción de datos o recuperación de datos de Firebase
Antes de comprender, es necesario seguir alguna configuración para la integración del proyecto con firebase.
Cree su proyecto en la consola Firebase y descargue el archivo google-service.json desde la consola y colóquelo en el módulo de nivel de aplicación de su proyecto. Siga el enlace para Crear proyecto en la consola.
Después de esto necesitamos agregar alguna dependencia en nuestro proyecto,
Primero agregue la ruta de clase en nuestro nivel de proyecto gradle,
classpath 'com.google.gms:google-services:3.0.0'Y después de eso aplique el complemento en el nivel de aplicación gradel, escríbalo a continuación de la sección de dependencia,
apply plugin: 'com.google.gms.google-servicesHay más dependencia que se requiere agregar en el nivel de aplicación gradle en la sección de dependencia
compile 'com.google.firebase:firebase-core:9.0.2'compile 'com.google.firebase:firebase-database:9.0.2'Ahora comience a insertar datos en la base de datos de base de fuego. Primero se requiere crear una instancia de
FirebaseDatabase database = FirebaseDatabase.getInstance();después de la creación del objeto FirebaseDatabase, vamos a crear nuestra DatabaseReference para insertar datos en la base de datos,
DatabaseReference databaseReference = database.getReference().child("student");Aquí el
studentes el nombre de la tabla, si la tabla existe en la base de datos, luego inserte los datos en la tabla; de lo contrario, cree uno nuevo con el nombre del estudiante. Después de esto, puede insertar datos usandodatabaseReference.setValue();funciona como siguiente,HashMap<String,String> student=new HashMap<>();student.put("RollNo","1");student.put("Name","Jayesh");databaseReference.setValue(student);Aquí estoy insertando datos como hasmap. Pero también puede establecer como clase modelo,
Comience a recuperar datos de base de fuego. Estamos usando addListenerForSingleValueEvent para leer el valor de la base de datos,
senderRefrence.addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { if(dataSnapshot!=null && dataSnapshot.exists()){ HashMap<String,String> studentData=dataSnapshot.getValue(HashMap.class); Log.d("Student Roll Num "," : "+studentData.get("RollNo")); Log.d("Student Name "," : "+studentData.get("Name")); } } @Override public void onCancelled(DatabaseError databaseError) { } });
Obtener valor / s de base de fuego
- Crea una clase y agrega importaciones para analizar información:
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.IgnoreExtraProperties;
//Declaration of firebase references
private DatabaseReference mDatabase;
//Declaration of firebase atributtes
public String uID;
public String username;
public String email;
@IgnoreExtraProperties
public class User {
//Default constructor
public User() {
//Default constructor required for calls to DataSnapshot.getValue(User.class)
mDatabase = FirebaseDatabase.getInstance().getReference();
//...
}
//...
}
- Agregue
addListenerForSingleValueEvent()a nuestra base de datos de referencia:
//Add new imports
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.ValueEventListener;
//...
public void getUser(String uID){
//The uID it's unique id generated by firebase database
mDatabase.child("users").child(uID).addListenerForSingleValueEvent(
new ValueEventListener () {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// ...
}
@Override
public void onCancelled(DatabaseError databaseError) {
// Getting Post failed, log a message
}
});
}
- Infle nuestra clase con información de base de
onDataChange()en el eventoonDataChange():
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//Inflate class with dataSnapShot
Users user = dataSnapshot.getValue(Users.class);
//...
}
- Finalmente podemos obtener diferentes atributos de la clase firebase como normalmente:
//User inflated
Users user = dataSnapshot.getValue(Users.class);
//Get information
this.uID = user.uID;
this.username = user.username;
this.email = user.email;
Mejores prácticas
- La base de fuego admite 32 niveles secundarios diferentes, por lo que es sencillo escribir incorrectamente las referencias, para evadir esto, se crean las referencias privadas finales:
//Declaration of firebase references
//...
final private DatabaseReference userRef = mDatabase.child("users").child("premium").child("normal").getRef();
//...
public void getUser(String uID){
//Call our reference
userRef.child(uID).addListenerForSingleValueEvent(
new ValueEventListener () {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// ...
}
@Override
public void onCancelled(DatabaseError databaseError) {
// Getting Post failed, log a message
}
});
}
- El evento
onCancelled()se llama cuando el usuario no tiene acceso a esta referencia por las reglas de la base de datos. Agregue el código pertinente para controlar esta excepción si lo necesita.
Para más información visite la documentación oficial.