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

198
Visualizações
¿Cómo puedo usar modificar y usar '$ y' en una consulta de búsqueda cuando algunos elementos son nulos?

Necesito ayuda para ajustar el código para esto:

 const posts = await PostMessage.find({ $or: [ { title }, { tags: { $in: tags.split(',') } } ]});

Por el momento, puede filtrar las publicaciones utilizando un formulario de búsqueda que tiene título y publicaciones. Puede dejar uno vacío cuando busque. Funciona bien excepto cuando usas ambos. Por ejemplo, buscar "senderismo" y etiquetar "Europa" mostraría publicaciones tanto para títulos de senderismo como para etiquetas de Europa (cuando quisiera que la búsqueda se redujera para mostrar solo publicaciones con el título senderismo y etiquetadas como Europa). Sé que puedo usar $and en lugar de $or pero eso solo devuelve las publicaciones si el usuario ingresa tanto el título como las etiquetas cuando quiero darle al usuario la opción de dejar uno en blanco. ¿Puede alguien ayudarme a escribir el código para eso?

Por lo que he visto, me preguntaba si podría hacer algo como esto:

O: { (Y: título no nulo, etiquetas no nulas) (O título nulo, etiquetas no nulas) (O título no nulo, etiquetas nulas))

¿Es posible hacer esto? No puedo encontrar un ejemplo similar. ¡Gracias por la ayuda!

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

0

Suponiendo que ninguno de los parámetros ( title , tags ) no estará definido, puede diseñar la consulta antes de ejecutarla

 const query = { title: title, tags: { $in: tags.split(",") }, }; const params = { title, tags }; Object.keys(params).forEach((param) => { if (!params[param]) { delete query[param] // delete from query if value is not present } }); const posts = await PostMessage.find(query);

De esta manera usará solo los parámetros que tienen valores.

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