Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

176
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda