Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Curso de Firebase para Web 2019

Curso de Firebase para Web 2019

Juan Guillermo Gómez Torres

Juan Guillermo Gómez Torres

Desarrollando la inserción de datos

17/32
Recursos

Aportes 30

Preguntas 9

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

las líneas

const settings = { timestampsInSnapshots : true} 
this.db.settings(settings)

ya no son necesarias puesto que esta configuración ya está por defecto 😄

Este es otro ejemplo de cómo se podría agregar datos

async function addUser(){
    let userData = {
        name: "Andres 2",
        lastName: "Sanabria",
        birthdate: firebase.firestore.FieldValue.serverTimestamp(),
        email: "[email protected]",
        profession: "UX/UI Designer"
    }

    let newDocID = await firebase.firestore().collection("users").add(userData).then(doc => doc.id);
    console.log("Saved: ", newDocID);
}

Un cambio de pasta térmica a los profesores no estaría mal, a lo mejor sea muy quisquilloso o parece que la computadora esta a punto de despegar 😂

Ya no es necesario hacer la configuración explicita de timestampsInSnapshots.

```const settings = { timestampsInSnapshots: true };
this.db.settings(settings);

Platzinautas, para evitar un error en post, necesitamos quitar los settings, quiten todo este codigo que les muestro 👇

La nueva actualizacion de firestore, esto lo tiene ahora como default true

timestampsInSnapshots: true // Ya es por default en firestore

Si tienen problemas de permisos para guardar en la DB, vayan a la tab de Reglas de Database y poner en true los permisos de lectura/escritura:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if true;
    }
  }
}

creo que seria bueno actualizar este curso

acabo de notar que la sesion se queda iniciada incluso despues de cerrar el navegador, como se puede evitar esto?. Si necesito que la sesión se cierre cuando se cierre el navegador

La estructura json para el post fue creado desde el codigo o desde la consola?

La siguiente linea de código que es lo que retorna?

return this.db.collection('posts').add({
....
})
.then(...)
.catch(...)

Hola, tengo el siguiente problema.
Cuando registro el Post, Firestore lo almacena 2 veces.

crearPost (uid, emailUser, titulo, descripcion, imagenLink, videoLink) {
    // Indicamos a firestore que coleccion se va a emplear para añadir el documento
    // El método add, genera automáticamene el id del documento
    
    // En este caso add devuelve promesa, por tanto la retornamos para que en la sección donde se invoca
    // este metodo, se hagan tareas una vez registrados los datos
    return this.db.collection('posts').add({
      uid: uid,
      autor: emailUser,
      titulo: titulo,
      descripcion: descripcion,
      imagenLink: imagenLink,
      videoLink: videoLink,
      // En este caso le indicamos a firestore que genere la fecha actual en el servidor
      fecha: firebase.firestore.FieldValue.serverTimestamp()
    })
    .then(refDoc => {
      console.log(`Id del Post: ${refDoc.id}`)
    })
    .catch(error => {
      console.log(`Error al crear el post: ${error}`)
    })
  }
$('#btnRegistroPost').click(() => {
    // Creamos una instancia de la clase Post para registrar el documento
    const post = new Post()

    // TODO: Validar que el usuario esta autenticado
    const user = firebase.auth().currentUser
    if(user == null) {
      Materialize.toast(`Para crear el Post debes estar autenticado`, 4000)
      // Hacemos esto para que no se ejecute lo demas
      return
    }

    // Materialize.toast(`Para crear el post debes estar autenticado`, 4000)

    // Recuperar la data del formulario para crear el POST
    const titulo = $('#tituloNewPost').val()
    const descripcion = $('#descripcionNewPost').val()
    const videoLink = $('#linkVideoNewPost').val()
    const imagenLink = sessionStorage.getItem('imgNewPost') == 'null'
      ? null
      : sessionStorage.getItem('imgNewPost')

    // Invocar el método crearPost para proceder a guardarlo
    post.crearPost(user.uid, user.email, titulo, descripcion, imagenLink, videoLink)
      .then(resp => {
        // En el cuerpo del método retornamos una promise
        // Por tanto la usamos aqui para realizar tareas posteriores al registro
        Materialize.toast(`Post creado correctamente`, 4000)
        // Cerrar el modal con el form de registro de post
        $('.modal').modal('close')
      })
      .catch(err => {
        Materialize.toast(`Error => ${err}`, 4000)
      })
  })

¿Cómo se puede personalizar el modelo de autenticación?
Es decir, agregarle atributos adicionales como dirección, edad, fechaDeNacimiento, etc?

Buenas, como se manejan los tipos de datos REFERENCE, que haga referencia a un documento de otra coleccion.

En el contructor de la clase no hace falta el siguiente codigo:

 const settings = {timestampsInSnapshots : true}
      this.db.settings(settings)

La configuracion ya se encuentra configurado por default en la version de firebase 5.8.x

Solo como un dato, Actualmente la propiedad **timestampsInSnapshots **esta deprecada. Les dejo el link a la documentación por si deseas checarlo

https://firebase.google.com/docs/reference/js/firebase.firestore.Settings.html?authuser=0#optional-timestamps-insnapshots

actualmente con la nueva version se tienen que quitar las lineas de
const settings = { timestampsInSnapshots: true }
this.db.settings(settings)
pero ahora tengo un proble que dice
onSnapshot: FirebaseError: "Missing or insufficient permissions."
alguien mas?

how to solve this error:
index.esm.js:102 [2020-03-23T18:04:21.556Z] @firebase/firestore: Firestore (7.11.0):
The timestampsInSnapshots setting now defaults to true and you no
longer need to explicitly set it. In a future release, the setting
will be removed entirely and so it is recommended that you remove it
from your firestore.settings() call now.

constructor(private afs: AngularFirestore) {
const setting = {timestampsInSnapshots: true};
this.afs.firestore.settings(setting);
}

quiero cerrar sesion en google y que se olvide de mis credenciales, pero no encuentro la manera

hola que tal… consulta… se ejecutan las consultas de insercion del lado del cliente?

Si necesitan un link pueden usar este https://www.youtube.com/watch?v=wSjEG9ARRw0

const settings = {}
this.db.settings(settings)
Puedes dejar la funcion con la configuracion vacia
@firebase/firestore: Firestore (7.23.0): The setting 'timestampsInSnapshots: true' is no longer required and should be removed.

MongoDB, are you there honey?

Increíble, me gusta porque es como usar un ORM para bases de datos relacionales, pero en este caso es nativo porque así es como la base de datos se comporta:D

Hubo un error y el corte del vídeo no me permitió ver como se soluciono, no supimos cual fue su solución

Hola, quiero integrar firestore en react nattive pero me dice que firebase.firestore() no es una funcion
si me pueden ayudar con eso se los agradeceria

Hola! en que curso aprendo a usar este tipo código?

    const imagenLink = sessionStorage.getItem('imgNewPost') == 'null'
      ? null
      : sessionStorage.getItem('imgNewPost')```

hola comunidad,
tengo una duda, en caso de que yo no quiera que los usuarios escriban dos post con el mismo nombre o titulo, como lo hago?
de antemano gracias por su ayuda.

bien

Si tienen algun error, posiblemente sea por los permisos.