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

360
Visualizações
¿Cómo ordenar los objetos según el valor del elemento seleccionado? - mongodb, nodejs

Tengo que ordenar los objetos según el valor de la opción de selección. ¿Cómo debo hacer esto?

//Este es mi elemento seleccionado en otro archivo

 <select class="form-select" aria-label="Default select example"> <option id="sorting" selected>Sort by</option> <option value="1">Low to High price</option> <option value="2">High to low price</option> <option value="3">From A to Z</option> <option value="4">From Z to A</option> </select>

//Y código con mi función de clasificación

 module.exports.listOfHouses = async (req, res) => { function selectedValue(){ if(document.getElementById("sorting").value === "1"){ return "title: 1" } else if(document.getElementById('sorting').value == "2"){ return "title: 1" }else if(document.getElementById('sorting').value == "3"){ return "title: 1" }else if(document.getElementById('sorting').value == "4"){ return "title: 1" } else { return "title: 1" } } const houses = await House.find({}).sort({selectedValue}); res.render('houses/houses', {houses} ); };
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Puede usar el método sort() de Array, que toma una función de devolución de llamada, que toma como parámetros 2 objetos contenidos en la array (que llamamos a y b)

 listOfHouses.sort((a, b) => (a.value > b.value) ? 1 : -1)

El bucle comienza después de ordenar

about 4 years ago · Juan Pablo Isaza Relatório

0

Debe enviar un objeto de clasificación en su solicitud expresa, pero tiene algunos errores en su código:

  • para obtener un valor del elemento de selección DOM, debe agregar una identificación al elemento de selección, no a la opción. por ejemplo :
 <select id="sorting" class="form-select" aria-label="Default select example"> <option selected>Sort by</option> <option value="1">Low to High price</option> <option value="2">High to low price</option> <option value="3">From A to Z</option> <option value="4">From Z to A</option> </select>

Para obtener el valor seleccionado, puede hacerlo mediante su función en este modo:

 function getSortingObject() { const value = document.getElementById("sorting").value if (document.getElementById("sorting").value === "1") { return {price:1} } else if (document.getElementById('sorting').value == "2") { return {price:-1} } else if (document.getElementById('sorting').value == "3") { return "title: 1" } else if (document.getElementById('sorting').value == "4") { return {title:1} } else { return {title:-1} } }

Ahora necesita enviar el objeto de clasificación actual desde su front-end a su backend, por lo que necesita obtener el objeto de clasificación en este modo:

 const sortingObject = getSortingObject() fetch(YOUR URL,YOUR_BODY WITH Sorting object )

En el backend, debe validar que el objeto de clasificación se puede usar y codificar los profesionales permitidos para clasificar en este modo:

 module.exports.listOfHouses = async (req, res) => { const canSortBy = ["title","price"] const sortingoBJECT = req.body.sortingObject const canSort = Object.keys(sortingoBJECT).findIndex(r=>!canSortBy[r]) if(canSort) res.sendStatus(....) const houses = await House.find({}).sort(sortingoBJECT); res.render('houses/houses', { houses }); };
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