Me encanto esta clase, he estado buscando un monton en internet en español, para realizar estas acciones en firestore y me ha costado encontrar algo. Excelente los ejemplos.
Bienvenida e Introducción
Qué aprenderas sobre Firebase para web
¿Qué es Firebase?
El proyecto que crearás
Consola Web de Administración
Consola de administración
Configuración de Firebase en el proyecto
Autenticación de Usuarios
Servicios de autenticación y configuración de usuarios
Habilitar en la consola los servicios de autenticación por email y Google
Probar creación de usuario y autenticación
Servicios de autenticación con google
Firebase Web Login con Facebook
Gestionando el estado del usuario
Gestión de usuarios
Exportación e importación de usuarios
Gestión de la Base de Datos
Firestore
Firebase Realtime Database vs Firestore
Configuración de Firestore al proyecto
Desarrollando la inserción de datos
Consultas en real time
Realizando inserciones, consultas compuestas, límites y ordenamiento
Reglas de seguridad
Índices
Almacenamiento de archivos
Almacenamiento de Archivos en Firebase
Subiendo archivos de nuestro blog
Reglas de seguridad para el almacenamiento
Hosting
Qué nos brinda el Hosting de Firebase
Desplegando la app al hosting
Redirects, rewrites y headers
Notificaciones Push
Qué son las notificaciones en Firebase y cómo es su arquitectura
Implementando las notificaciones en el proyecto
Agregar funciones para recibir las notificaciones
Probando las notificaciones desde la aplicación
Conclusiones
Conclusiones
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
No se trata de lo que quieres comprar, sino de quién quieres ser. Invierte en tu educación con el precio especial
Antes: $249
Paga en 4 cuotas sin intereses
Termina en:
Juan Guillermo Gómez Torres
Aportes 32
Preguntas 13
Me encanto esta clase, he estado buscando un monton en internet en español, para realizar estas acciones en firestore y me ha costado encontrar algo. Excelente los ejemplos.
Este curso esta un poco desactualizado y si han estado viendo su consola, firebase lanza un error de que las cofiguraciones que aplicamos ya estan por defecto, como lo es
const settings = { timestampsInSnapshots: true }
this.db.settings(settings)
esto significa que ya no tenemos que poner estas lineas ya que ya estan por defecto
Como puedo hacer consultas con el operador OR?
¿Cuál es la diferencia entre realizar un .set() con merge y realizar un .update() ?
Ahora si se permite el != (diferente de…) como operador para consultas en firebase, y muchos más!!:
Fuente y documentación: https://firebase.google.com/docs/firestore/query-data/queries
Según he entendido, el batch sería algo así como hacer un Promise.all() en Javascript.
Metodos Avanzados de consulta en firebase
Pasos para poder realizar inserciones, consultas compuestas, límites y ordenamiento en esta clase deben:
Crear un nuevo proyecto(Folder), descargar los archivos (Archivos y Enlaces) y abrirlos en su editor
Copiar las credenciales index.html
<script>
// Initialize Firebase
var config = {
};
firebase.initializeApp(config);
</script>
2.1. con las del proyecto de Firebase : Blogeek
// For Firebase JavaScript SDK v7.20.0 and later, measurementId is an optional field
var firebaseConfig = {
apiKey: “API_KEY”,
authDomain: “PROJECT_ID.firebaseapp.com”,
databaseURL: “https://PROJECT_ID.firebaseio.com”,
projectId: “PROJECT_ID”,
storageBucket: “PROJECT_ID.appspot.com”,
messagingSenderId: “SENDER_ID”,
appId: “APP_ID”,
measurementId: “G-MEASUREMENT_ID”,
};
y no vi nada de paginación
Para poder trabajar en esta clase deben:
Me recuerda mucho al query builder de Eloquent en Laravel, obviamente tendrá sus diferencias…
Pero aquí me empiezo a preguntar… ¿Y la seguridad? Este código puede ser modificado del lado del cliente, así que nada le impide a mi usuario armar sus propias consultas y acceder a mi base de datos…
aqui falta algo.
Aqui hice un pequeno resumen usando codigo.
Agregar documentos con llaves propias
DB.collection("collection").doc(llave_personalizada)
.set({...});
Actualizar datos en documentos
DB.collection("collection")
.doc(id)
.update({...});
Borrar atributo especifico dentro de documento
DB.collection("collection")
.doc(id)
.update({
atributo: firebase.fitestore.FieldValue.delete()
});
Consultar sin realtime
DB.collection("collection")
.doc(id)
.ref.get().then((result) => {...})
Consultar por filtro where
DB.collection("collection")
.where("atributo","operador",value)
.get().then....
Nota: El “operador” puede ser ==, <,>, <= y >=. Para hacer un AND se ejecuta otro where a otro atributo con el operador y valor correspondiente. Firesotore no admite operaciones OR
Order by (asc o desc)
DB.collection("collection")
.orderBy("atributo","asc")
limite de registros
DB.collection("collection")
.limit(n)
Excelente
Excelente clase!, deberian hacer al menos una así para cada lenguaje o tecnología 👏
estas es una serie de videos donde se toma mas tiempo para desarrollar todo esto, mas despacio. Pueden verlo desde el segundo video
se puede hacer paginado con las consultas?
Creo que esta es una forma un poco más clara que anidar tantas cosas
const getAllDocuments = async () => {
// .orderBy('price', 'asc') => Sort documents
// by key 'price' in ascending 'asc'
// .limit(2) => Limit the results (qty)
// Example with order and limit
// const allRef = await DB.collection('products').orderBy('price', 'asc').limit(3).get()
const allRef = await DB.collection('products').get()
const allDocs = allRef.docs.map(document => {
return { id: document.id, ...document.data() }
})
if (allDocs.length) {
setRealTimeData(allDocs)
alert('Documentos traídos con éxito')
}
}```
Esos archivos a que nivel de projecto se deben de guardar?
con el batch podriamos hacer transacciones?
Muchas gracias profe!
buen día. como puedo probar estas consultas en la base de datos que cree en firestore?
Se puede interpretar a batch como una transaccion?
Para el objeto firebase.firestore()
tenemos los siguientes métodos:
const db = firebase.firestore()
// { ... } es un objeto con los campos/valor para el documento
// Para hacer referencia a una colección
const miColeccion = db.collection('nombre_coleccion')
// Para hacer referencia a un documento por su id de una colección
const miDoc = miColeccion.doc('id_doc')
// Para modificar un documento
miDoc.set({ ... })
// Para ejecutar varias tareas en una sola (ref# es una referencia a un documento)
const batch = db.batch()
const ref1 = db.collection('mi_colección').doc('id1') // ref al doc 1
batch.set(ref1, { ... }) // set al doc 1
const ref2 = db.collection('mi_colección').doc('id2') // ref al doc 2
batch.set(ref2, { ... }) // set al doc 2
const ref3 = db.collection('mi_colección').doc('id3') // ref al doc 3
batch.set(ref3, { ... }) // set al doc 3
...
batch.commit() // Ejecuta las tareas
.then(() => ... )
.catch(() => ... )
// Para añadir un nuevo documento
miColeccion.add({ ... })
.then(() => ... )
.catch(() => ... )
// Para añadir nuevos campos a un documento
miDoc.set(
{ ... }, // Aquí es donde se escriben los nuevos campos con sus valores
{ merge: true }
)
// Para actualizar campos de un documento
miDoc.update({ ... })
// Para actualizar un campo de objeto de un documento
miDoc.update({ 'nombre_objeto.campo_objeto': 'valor' })
// Para borrar un campo de un documento
miDoc.update({ 'nombre_campo': firebase.firestore.FieldValue.delete() })
// Para borrar un documento
miDoc.delete()
// Para obtener los campos de un documento (consultar un documento)
miDoc.get()
.then(respDoc => {
console.log(respDoc.data()) // Imprime los campos
console.log(respDoc.data().nombre_campo) // Imprime el campo determinado
}
// Para consultar con un filtro (WHERE)
miColeccion.where('titulo', '==', unTitulo).get() // consultando por titulo
.then(querySnapshot => ...)
// querySnapshot es un array con los documentos que cumplen el filtro
// Para buscar por varios filtros
miColeccion
.where('campo1', ===, 'valor1')
.where('campo2', ===, 'valor2')
...
.get().then(querySnapshot => ...)
// Para ordenar los documentos y obtener un numero limitado de ellos
miColeccion
.orderBy('campo', 'asc') // Ordenando de forma ascendente
.limit(n) // Solo 'n' documentos
.get()
.then(querySnapshot => ...)
Dejo una lectura sobre las consultas ya que no entendía si el metodo where() era de JS, JQuery o Firebase:
https://firebase.google.com/docs/firestore/query-data/queries?hl=es
Super!! esta clase es un buen compilado de todas las funciones que mas se utilizan. Toca guardar para tener de referencia mas adelante en nuestro proyecto. 😃
Excelente clase!
En esta clase practicamos las consultas para firestore(agregacion, edicion, consultas masivas, consultas unitarias, borrado, …):
Aquí el código para ahorrar tiempo: https://codesandbox.io/s/firebase-insercion-j8u4g?file=/firestore.js.
SOLO DEBEN AÑADIR(copiar/pegar) SU CONFIGURACION DE FIREBASE( la que esta en el proyecto > public > config > ConfigFirebase.js ), esto pegar en la variable varConfig en el script de abajo del *index.html del enlace que yo envié:
Para que el id se genere automáticamente solo dejamos vacío .doc()
const ref2 = DB.collection('products').doc()
batch.set(ref2, {
name: 'Agregado desde Batch',
image: 'Imagen',
price: '123456',
date: firebase.firestore.FieldValue.serverTimestamp(),
})```
¿Cómo puedo hacer una subconsulta en firebase pero con angular? Gracias.
nota cuando se dice ‘al mismo tiempo’ no se refiere ‘en pararelo’… sino ‘secuencialmente’
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?