Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
6
respuestas

NO FILTRA

Tengo un problema con la filtracion de videos:


//GET
async function listarvideos() {
  try {
    const conexion = await fetch("http://localhost:3001/videos");
    const conexionconvertida = conexion.json();
    // retorna la conexion
    return conexionconvertida;

  } catch (error) {
    console.error('Error al obtener los datos', error);
  }
}

// POST
async function enviarVideos(titulo,descripcion,url,imagen){
  const conexion = await fetch("http://localhost:3001/videos", {
    method: "POST",
    headers: {"Content-type":"application/json"},
    body:JSON.stringify({
      titulo:titulo,
      descripcion: `${descripcion} mil visualizaciones`,
      url:url,
      imagen:imagen
    })
  })

  const conexionconvertida = conexion.json();

  if(!conexion.ok){
    throw new Error("Ha ocurrido un error al enviar el video");
  }

  return conexionconvertida;
}


// BUSCAR VIDEOS
async function buscarVideos(palabraClave){
  const conexion = await fetch(`http://localhost:3001/videos?q=${palabraClave}`);
  const conexionconvertida = conexion.json();
  return conexionconvertida
}


export const conexionAPI={
  listarvideos, enviarVideos,buscarVideos
}

import {conexionAPI } from "./conexionAPI.js";

// importa la funcion crearcard del archivo mostrarVideos.js
import crearCard from "./mostrarVideos.js";

async function filtrarVideo(evento){
  evento.preventDefault();
  // trae los datos del elemento input con el atributo data-busqueda
  const datosdebusqueda = document.querySelector("[data-busqueda]").value;
  // conexion con el archivo conexionAPI y utiliza la funcion buscarVideos
  const busqueda = await conexionAPI.buscarVideos(datosdebusqueda);
  
  const lista = document.querySelector("[data-lista]");

  while(lista.firstChild){
    lista.removeChild(lista.firstChild);
  }

  lista.replaceChildren();
  busqueda.forEach(elemento => lista.appendChild(crearCard(elemento.titulo,elemento.descripcion,elemento.url,elemento.imagen)));
  
  //busqueda.forEach(video => lista.appendChild(crearCard(video.titulo,video.descripcion,video.url,video.imagen)));
   
  if(busqueda.length==0){
    lista.innerHTML= `<h2 class="mensaje__titulo">No fueron encontrados elementos para ${datosdebusqueda}</h2>`
  }

   //console.log(busqueda);

}

const boton = document.querySelector("[data-boton-busqueda]");
boton.addEventListener("click", evento => filtrarVideo(evento))

import {conexionAPI } from "./conexionAPI.js";

const lista = document.querySelector("[data-lista]")

export default function crearCard(titulo,descripcion,url,imagen){
  const video = document.createElement("li");
  video.className = "videos__item";
  video.innerHTML = `
  <iframe width="100%" height="72%" src="${url}"
  title="${titulo}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
  allowfullscreen></iframe>
  <div class="descripcion-video">
    <img src="${imagen}">
    <h3>${titulo}</h3>
    <p>${descripcion}</p>
  </div>`

  return video
}

async function listarVideos(){
  try {
    // Realizar la solicitud a la API
    const listaAPI = await conexionAPI.listarvideos();

    // Iterar sobre la lista de videos y agregarlos a la lista
    listaAPI.forEach(video => lista.appendChild(crearCard(video.titulo,video.descripcion,video.url,video.imagen)));
  } catch (error) {
    lista.innerHTML = `<h2 class="mensaje__titulo"> Ha ocurrido un problema de conexion :( </h2>`;
    //console.error('Error al listar videos:', error);
  }
}

listarVideos();

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

6 respuestas

¡Hola! Parece que estás teniendo un problema con la filtración de videos en tu proyecto de JavaScript. Después de revisar tu código, parece que el problema podría estar en la función filtrarVideo en el archivo filtrarVideos.js. Parece que estás intentando filtrar los videos según una palabra clave, pero los videos no se están filtrando como esperas.

Después de revisar el código, parece que estás utilizando la función buscarVideos de conexionAPI para buscar los videos según la palabra clave, y luego estás agregando los resultados a la lista. Sin embargo, parece que el problema podría estar en la lógica de filtrado en sí misma.

Una posible solución podría ser revisar la lógica de filtrado en la función filtrarVideo. Asegúrate de que la función buscarVideos esté devolviendo los resultados esperados y que la lógica de filtrado esté funcionando correctamente.

Además, parece que estás intentando eliminar los elementos anteriores de la lista antes de agregar los nuevos elementos. Sin embargo, la lógica para eliminar los elementos anteriores podría no estar funcionando como se espera.

Te recomendaría revisar la lógica de filtrado en la función filtrarVideo y asegurarte de que esté funcionando correctamente. También podrías revisar la lógica para eliminar los elementos anteriores de la lista y asegurarte de que esté funcionando como se espera.

Espero que esto te ayude a solucionar tu problema. ¡Buena suerte y sigue adelante con tu proyecto de JavaScript!

Espero haber ayudado y buenos estudios!

me pasa lo mismo

me pasa lo mismo

Hola chicos, cómo están?

Pero ustedes pudieron realizar la filtracion de los vídeos a través de la solución que comparti?

Hola... puede hacerlo pero otro compañero me guio con otro código diferente al del video y ahi si lo pude hacer funcionar

Me alegro que pudiste avanzar!

Puedes, por favor, compartir la solución que funcionó por aquí?