No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Curso de Firebase 5 para Web

Curso de Firebase 5 para Web

Juan Guillermo G贸mez Torres

Juan Guillermo G贸mez Torres

Realizando inserciones, consultas compuestas, l铆mites y ordenamiento

19/32
Recursos

Aportes 32

Preguntas 13

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

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: 鈥淎PI_KEY鈥,
authDomain: 鈥淧ROJECT_ID.firebaseapp.com鈥,
databaseURL: 鈥https://PROJECT_ID.firebaseio.com鈥,
projectId: 鈥淧ROJECT_ID鈥,
storageBucket: 鈥淧ROJECT_ID.appspot.com鈥,
messagingSenderId: 鈥淪ENDER_ID鈥,
appId: 鈥淎PP_ID鈥,
measurementId: 鈥淕-MEASUREMENT_ID鈥,
};
  1. Iniciar el proyecto ya sea con Live Server de Visual Estudio Code

y no vi nada de paginaci贸n

Para poder trabajar en esta clase deben:

  1. descargar los archivos y abrirlos en su editor
  2. crear un projecto en Firestore,
  3. inicializar su firebase, copiando los Ids en el HTML
  4. Iniciar una base de datos en Firestore.
  5. ir a reglas y cambiar false por true en el if, ya con eso los deberia dejar seguir el tutorial

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 鈥渙perador鈥 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

serie de videos de todas estas funciones pero mas despacio

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?

Algo similar

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?

Realizando inserciones, consultas compuestas, l铆mites y ordenamiento

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 鈥榓l mismo tiempo鈥 no se refiere 鈥榚n pararelo鈥欌 sino 鈥榮ecuencialmente鈥