Cómo insertar datos en Firestore con validación
Clase 17 de 32 • Curso de Firebase 5 para Web
Contenido del curso
Consola Web de Administración
Autenticación de Usuarios
- 6

Servicios de autenticación de Firebase
06:30 min - 7

Crear usuarios con Firebase Authentication
13:12 min - 8

Autenticación de Usuarios con Firebase: Registro y Verificación de Email
15:02 min - 9

Autenticación con Google usando Firebase en aplicaciones web
06:22 min - 10

Login con Facebook en Firebase
09:47 min - 11

Gestión de Autenticación de Usuarios con Firebase
11:42 min - 12

Gestión de usuarios en consola Firebase
05:05 min - 13

Importar y exportar usuarios de Firebase
04:17 min
Gestión de la Base de Datos
- 14

Firestore vs Realtime Database: por qué migrar
08:36 min - 15
Comparación entre Realtime Database y Firestore de Firebase
02:11 min - 16

Habilitar Firestore en Firebase Console
09:53 min - 17

Cómo insertar datos en Firestore con validación
Viendo ahora - 18

Consultas en Tiempo Real con Firestore para Aplicaciones Web
15:01 min - 19

Operaciones avanzadas de Firestore
13:12 min - 20

Reglas de seguridad básicas en Firestore
08:07 min - 21

Creación y gestión de índices en Firestore para optimizar consultas
07:13 min
Almacenamiento de archivos
Hosting
Notificaciones Push
Conclusiones
Crear un flujo sólido para insertar datos en Firestore con control de autenticación y manejo de promesas es clave para apps escalables. Aquí verás cómo configurar la instancia, crear un documento con ID automático y usar serverTimestamp del servidor, además de validar el usuario desde Firebase Auth y depurar errores comunes.
Configuración y preparación
Antes de insertar datos, se define en el constructor una variable db que guarda la instancia de Firestore. También se ajustan los settings para que los valores tipo DateTime se recuperen como Timestamp. Esto centraliza el acceso a la base y estandariza las fechas del servidor.
¿Cómo inicializar la base de datos con una instancia de Firestore?
- Guardar la instancia en
this.dbpara reutilizarla en varias funciones. - Configurar timestamps in snapshots para recibir fechas como Timestamp.
// En el constructor
this.db = firebase.firestore();
this.db.settings({ timestampsInSnapshots: true });
¿Para qué sirve timestamps in snapshots?
- Convierte fechas almacenadas como DateTime en objetos Timestamp al leerlos.
- Facilita cálculos de tiempo y ordenamiento.
Inserción del documento y manejo de resultados
La creación del post se realiza con collection('post') y add(...). Esto permite que Firestore genere un ID automático. Además, la fecha se asigna desde el servidor con firebase.firestore.FieldValue.serverTimestamp() para evitar desajustes locales.
¿Cómo crear un documento con ID automático e información del post?
- Usar
addpara delegar a Firestore la creación del ID. - Enviar un objeto JavaScript con campos: UID, autor, título, descripción, link de imagen, link de video y fecha.
this.db
.collection('post')
.add({
uid: uidUsuario,
autor: emailUsuario,
titulo,
descripcion,
linkImagen,
linkVideo,
fecha: firebase.firestore.FieldValue.serverTimestamp()
})
.then(ref => {
console.log('ID del post:', ref.id);
})
.catch(error => {
console.error('Error creando el post:', error);
});
¿Cómo obtener serverTimestamp del servidor?
- Usar
FieldValue.serverTimestamp()entrega fecha y hora del servidor. - Evita inconsistencias por reloj del cliente.
Validación de usuario y prueba en la interfaz
El controlador de post crea la instancia de la clase, valida si el usuario está autenticado y, solo entonces, llama a la función de creación. Se muestran mensajes según el éxito o el error, y se depuran fallos como variables mal nombradas.
¿Cómo validar que el usuario esté autenticado antes de crear el post?
- Recuperar el usuario con
firebase.auth().currentUser. - Si es
null: informar que debe autenticarse y salir.
const user = firebase.auth().currentUser;
if (user === null) {
// Mostrar alerta: para crear el post debe estar autenticado.
return;
}
¿Qué campos se envían y cómo se reporta el resultado?
- Enviar
uiddel usuario,email,titulo,descripcion,linkImagen,linkVideo. - Si la promesa resuelve: imprimir “Post creado correctamente”.
- Si falla: mostrar “Error creando el post” y el detalle del error.
¿Cómo depurar un error común de variables mal nombradas?
- Caso real: “autor no está definido”. La causa fue usar un nombre distinto al declarado (por ejemplo,
emailUseren lugar deautor). - Solución: alinear el nombre de la variable con la clave del objeto antes de guardar y probar de nuevo.
¿Te gustaría que ampliemos con lectura en tiempo real y consultas filtradas en Firestore? Deja tus dudas o casos de uso en los comentarios.