Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

172
Vistas
Quiero asegurarme de que el mismo usuario que usa Firebase no le gusta la publicación varias veces.

Tengo estos códigos para hacer la funcionalidad Me gusta

 /*Here I increment by 1 every time someone submit like*/ db.collection("post").doc(postId).update({ likes: increment }) /*Here I collect the uid of the user who submit Like and append to an Array*/ db.collection('post').doc(postId).update( { usersArray: firebase.firestore.FieldValue.arrayUnion( userId ) });

¿ahora es posible tener un código que se ejecuta cada vez que alguien envía Me gusta para verificar si el usuario ya existe en usersArray?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Antes de actualizar el documento de post , primero debe leerlo para verificar si el ID de usuario ya está incluido en la usersArray userId

Para ello, deberá utilizar una Transacción para asegurarse de que el documento no se modificó entre el momento en que lo leyó para verificar el Array y el momento en que lo actualizó.

 const postDocRef = db.collection('post').doc(postId); return db .runTransaction((transaction) => { // This code may get re-run multiple times if there are conflicts. return transaction.get(postDocRef).then((postDoc) => { if (!postDoc.exists) { throw 'Document does not exist!'; } if (postDoc.data().usersArray.includes(userId)) { throw 'User has already liked this post!'; } const newLikes = postDoc.data().likes + 1; transaction.update(postDocRef, { usersArray: firebase.firestore.FieldValue.arrayUnion(userId), likes: newLikes, }); }); }) .then(() => { console.log('Transaction successfully committed!'); }) .catch((error) => { console.log('Transaction failed: ', error); });

Tenga en cuenta que incluso con este código, los usuarios malintencionados aún pueden usar sus datos de configuración con su propio código para escribir su UID en la matriz por segunda vez. Para evitar esto, querrá escribir reglas de seguridad para permitir solo agregar el UID si aún no está en la matriz (comparando request.resource con resource ).

about 4 years ago · Juan Pablo Isaza Denunciar

0

Use las funciones de la nube para los incrementos de contador, como los me gusta de las publicaciones. Podemos obtener el valor actualizado y anterior del documento en el activador de la función onUpdate en la recopilación de publicaciones, luego podemos verificar si el usuario ya está incluido en userArray e incrementar/disminuir el conteo de Me gusta en consecuencia.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda