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

186
Visualizações
Cómo contar el número de vistas en una publicación

Estoy tratando de crear un sitio web que contenga publicaciones, así que tengo un enlace "Leer más" que expande el contenido allí y allí solo como quora. ¿Cómo puedo saber el número total de veces que se ha hecho clic para poder mostrar las vistas?

Estoy usando nodejs, express y mongodb como servidor.

Este es mi archivo hbs (manillar) con ese enlace para leer más

 <p class="startPara">{{stripTags (truncate body 200)}}<span class="dots" >... </span></p> <span class="content"> <p>{{stripTags (truncate body 400)}}</p> </span> <a onclick="readMoreFunction(this)" class="buttonReadMore" >Read more</a> </div>

Este es mi archivo hbs principal que ejecuta todas las etiquetas js de su script

 <script> function readMoreFunction(el) { var parent = el.closest(".wrapper") var dots = parent.querySelector(".dots"); var contentText = parent.querySelector(".content"); var btnText = parent.querySelector(".buttonReadMore"); var startPara=parent.querySelector(".startPara"); btnText.style.display = "none"; startPara.style.display= "none"; dots.style.display = "none"; contentText.style.display = "inline"; } </script>

Ahora, un usuario único hace clic en cada publicación, por lo que solo incrementar una variable no ayudará.

Entonces, dígame cómo calcular la cantidad total de veces que se hizo clic en ese enlace para una publicación específica y luego cómo comunicarlo a la base de datos para que pueda mostrarlo en la página web.

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Me imagino que necesitaría tener una propiedad de 'vistas' en su publicación en MongoDB.

Podría servir los primeros 400 caracteres para cada publicación en su solicitud de API getPosts .

Hacer clic en leer más podría llamar a getPost(id) en su API, devolviendo la carga completa de la publicación, durante ese proceso podría incrementar las vistas de publicación en uno.

Además, como @tobiv sugiere en los comentarios, podría tener un código que garantice que solo se cuenten los clics de visitantes únicos.

about 4 years ago · Juan Pablo Isaza Relatório

0

Almacene un objeto en la sesión de los espectadores y la columna db llamada 'viewed_posts'. Use el objeto para determinar si vieron una publicación o no.

 if (typeof(req.session.viewed_posts[post_id]) == 'undefined') { req.session.viewed_posts[post_id] = 1; //update session //increment post count in posts table with post id //update 'viewed_posts' column with new session } //select post

Cuando el objeto en 'viewed_posts' sea demasiado grande (por ejemplo, 3000 publicaciones vistas), elimínelo. Si el espectador promedio lee 2 publicaciones únicas al día, pasarán 4,5 años hasta que la segunda vista única PUEDE ocurrir en la misma publicación.

Aunque esto no garantiza la unicidad para siempre (todavía mucho tiempo), es mucho más eficiente porque...

  1. Evitas una tabla de vistas por completo

  2. El recuento de vistas en la tabla de publicaciones es un solo número (sin búsqueda)

  3. El espectador no tiene que buscar en una tabla para ver si ya vio una publicación. Solo tienen que referirse a su sesión.

Use varchar (x) Y la identificación incrementada NO el uuid para almacenar el objeto.

O (mi forma preferida)

Vaya a la inversa y almacene un objeto en la fila de la publicación, selecciónelo, analícelo, verifique si está allí, si no está allí, insértese a sí mismo y en el cliente, use object.keys para obtener cuántas vistas tiene la publicación. Cuando el objeto es demasiado grande, elimine los pares de valores clave que son los más antiguos e incremente un conteo por uno en otra columna (agregue claves y conteo) O deje de agregar pares de valores clave.

O

use una cláusula de unión cuando seleccione con la tabla de vistas

 select * from posts as p LEFT JOIN views as v ON p.post_id = post_id AND p.post_id = v.post_id AND v.view_id = my_id LIMIT 2 //if the result length is 1, insert self into views //if the result length is 2, you know that you have already viewed (don't insert) //select post view count and return result[0] from above with count

O

no use una tabla de unión con vistas

 post = select * from posts where post_id = post_id if_viewed = select COUNT(*) from views where post_id = post_id AND view_id = my_id (if count is 0 insert into views) post_views = select COUNT(*) from views WHERE post_id = post_id //return post and post_views
about 4 years ago · Juan Pablo Isaza Relatório

0

Siendo realistas, este es un tema muy complejo.

Ingenuo: haga clic en el botón para enviar un ping al punto final de back-end dedicado que actualiza la base de datos. Piense en múltiples clics (porque el usuario está aburrido), otras formas de leer publicaciones completas, etc.

Práctico: considere Google Analytics y tal.

No: cuente las solicitudes en el servidor. Los navegadores hacen cosas raras (solicitudes de verificación previa, vistas previas diferentes, etc.). El número de solicitudes puede no corresponder al número de vistas.

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