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

105
Vistas
Anidando múltiples consultas [Op.not] en una sola cláusula where

Tengo un filtro que permite a los usuarios indicar temas y géneros que les gustaría eliminar de los resultados de búsqueda. Esta es una situación O, no Y, por lo que si un tema o un género coinciden, deben eliminarse del grupo.

Si ejecuto la consulta a continuación con una sola cláusula [Op.not], los temas y géneros se filtran correctamente. Cuando intento combinarlos como se muestra en el ejemplo, solo se ejecutan los géneros [Op.not]. Supongo que los he encadenado incorrectamente en la cláusula ¿dónde?

Ejemplo de código

 //Variables to store filters from JSON body let sortBy = [req.body.galleryFilters.sortBy, 'ASC'] let hiddenThemes = []; let hiddenGenres = []; //Parse the body for activeFilters create and array of Active Filters req.body.galleryFilters.themes.forEach(theme => { if(theme.hidden === true) { hiddenThemes.push(theme.name) } }) req.body.galleryFilters.genres.forEach(genre => { if(genre.hidden === true) { hiddenGenres.push(genre.name) } }) //use variables above to create new playlist obje const playlists = await db.playlists.findAll({ where: { [Op.not]: { themes: { [Op.overlap]: hiddenThemes }, }, [Op.not]: { genres: { [Op.overlap]: hiddenGenres }, }, }, order: [[req.body.galleryFilters.sortBy, 'ASC']] }); return res.send(playlists); } });
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Soy demasiado inexperto para dar una explicación detallada, pero la revisión a continuación parece funcionar por ahora:

 const playlists = await db.playlists.findAll({ where: { [Op.not]: { [Op.or]: { themes: { [Op.overlap]: hiddenThemes }, genres: { [Op.overlap]: hiddenGenres }, } } }, order: [[req.body.galleryFilters.sortBy, 'ASC']] }); return res.send(playlists); }
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