Javascript Logo
en español

Cómo guardar datos con Firebase

Medio
-
3 min. lectura

Firebase es una tecnología propietaria de Google que nos permite obtener una serie de herramientas como bases de datos, analítica, cloud functions o hosting de proyectos estáticos. Todo a un bajo coste o incluso gratis para proyectos pequeños.

Hoy nos centramos en una de las bases de datos (Realtime database) con la que podremos leer y escribir datos en tiempo real.

Alta en Firebase

Para darnos de alta en Firebase solo necesitaremos una cuenta de Google, acceder al sitio firebase.google.com y seguir los pasos para crear una cuenta y un primer proyecto.

Bienvenida de Firebase

A continuación crearemos la base de datos haciendo click en Realtime Database que se encuentra dentro del apartado "Compilación" en el menu de la izquierda y después pulsaremo sobre "Crear una base de datos"

Image

Seleccionaremos una ubicación cercana como "opciones de base de datos" y posteriormente en "reglas de seguridad" seleccionaremos "Comenzar en modo de pruebas". Este modo lo tendremos que configurar más adelante para proteger nuestros datos.

Una vez creada nuestra base de datos, accederemos al panel de general de Firebase y obtendremos los datos de configuración del proyecto haciendo click en la rueda dentada que aparece justo al lado de "Descripción general".

Pulsaremos sobre "configuración del proyecto" y crearemos una nueva app haciendo click en el icono con el símbolo </> que aparece en la parte inferior, ya que vamos a crear una webapp.

Registraremos la App con un nombre y en el apartado Agregar el SDK de Firebase seleccionaremos "Utilizar una etiqueta <script>" (si usas NPM y webpack o similar puedes usar la primera opción, pero en este tutorial nos centraremos en la opción más básica)

Image

Tendrás algo similar a el siguiente código:

<script type="module">
  // Import the functions you need from the SDKs you need
  import { initializeApp } from "https://www.gstatic.com/firebasejs/9.9.3/firebase-app.js";
  // TODO: Add SDKs for Firebase products that you want to use
  // https://firebase.google.com/docs/web/setup#available-libraries

  // Your web app's Firebase configuration
  const firebaseConfig = {
    apiKey: "XXXXXXXX",
    authDomain: "XXXXXX.firebaseapp.com",
    databaseURL: "https://XXXXXXX-default-rtdb.europe-west1.firebasedatabase.app",
    projectId: "XXXXXX",
    storageBucket: "XXXXXXX.appspot.com",
    messagingSenderId: "XXXXXX",
    appId: "1:XXXXXXX:web:c80f4e566283c27646d6fd"
  };

  // Initialize Firebase
  const app = initializeApp(firebaseConfig);
</script>

Escribiendo datos

Como solo vamos a trabajar con la base de datos, el único valor de firebaseConfig que nos interesará es databaseURL

Veamos como escribir en la base de datos de Firebase.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Escribiendo en Firebase</title>
</head>
<body>
    <script type="module">
        import { initializeApp} from "https://www.gstatic.com/firebasejs/9.9.3/firebase-app.js";
        import { getDatabase, ref, set } from "https://www.gstatic.com/firebasejs/9.9.3/firebase-database.js";
        const firebaseConfig = {
          databaseURL: "https://XXXXXXX-default-rtdb.europe-west1.firebasedatabase.app",
        };
        const app = initializeApp(firebaseConfig);
        const database = getDatabase(app)
        const nodo = ref(database, 'mi-dato')
        set(nodo, {
            valor1: "uno", 
            valor2: "dos",
            valor3: "tres"
        })
      </script>
</body>
</html>

El código anterior lo que hacemos es importar la librería de base de datos de firebase y extraer los métodos getDatabase, ref y set

Con getDatabase obtenemos una instancia de Firebase Realtime database y le asignamos la configuración de nuestra app.

ref nos situa en un nodo de nuestra base de datos. Este nodo se comporta como cualquier objeto de javascript y en éste podremos añadir cadenas, arrays, números u otros objetos.

Por último con set guardaremos estos datos, en este caso un objeto con tres valores.

Una vez ejecutado esta código, tendremos los datos almacenados en la base de datos:

Image

Leyendo datos

Para leer los datos de la aplicación nos tendremos que suscribir a un nodo y escuchar sus cambios.

Lo haremos con el método onValue que extraemos de firebase-database.

...
import { getDatabase, ref, set, onValue } from "https://www.gstatic.com/firebasejs/9.9.3/firebase-database.js";
...
const refValor1 = ref(database, 'mi-dato/valor1')
onValue(refValor1, snapshot => {
  const data = snapshot.val()
  console.log(`El valor1 ha cambiado a ${data}`)
})

Si por el contrario queremos leer los datos una sóla vez, tendremos que usar el método get y child de la siguiente forma:

import { getDatabase, ref, set, get, child } from "https://www.gstatic.com/firebasejs/9.9.3/firebase-database.js";
const dbRef = ref(database, 'mi-dato')
get(child(dbRef, 'valor1')).then((snapshot) => {
  if (snapshot.exists()){
    console.log(`El valor1 es ${snapshot.val()}`)
  }
})