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

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?

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 馃槀

creo que seria bueno actualizar este curso

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;
    }
  }
}

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

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

Si tienen algun error, posiblemente sea por los permisos.

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?

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