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

382
Visualizações
Cómo tratar consultas MongoDB personalizadas en NodeJS

Estoy transfiriendo un servidor web de python a node.js y una de las capacidades que debe tener ese servidor es recibir un POST que contiene información sobre una consulta de MongoDB y enviar el resultado de la consulta a la página web. La consulta puede contener o no un filtro, una proyección, un límite y una ordenación. En python podemos hacerlo así:

(En los ejemplos a continuación, command_name es igual a 'buscar')

 command = getattr(collection, command_name) cmd_filter = loads(filter_str) if filter_str else None projection = loads(projection_str) if projection_str else None limit = loads(limit_str) if limit_str else 0 sort = [(elt['key'], elt['order']) for elt in loads(sort_str)] if sort_str else None response = command(filter=cmd_filter, projection=projection, sort=sort, limit=limit)

Pero tengo problemas para encontrar una manera de hacerlo en node.js, he probado cosas como esta:

 command_name = req.body['command'] command = collection[command_name] command = filter_str != undefined ? collection[command_name](JSON.parse(filter_str)) : collection[command_name] command = projection_str != undefined ? command['project'](JSON.parse(projection_str)) : command command = sort_str != undefined ? command['sort'](JSON.parse(sort_str)) : command command = limit_str != undefined ? command['limit'](JSON.parse(limit_str)) : command response = command.toArray(function(err, result) { if (err) throw err console.log(result) })

Pero no funciona. Obtengo un MongoError: Can't canonicalize query: BadValue bad order array [2]

about 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Su código que no funciona es el menor de sus problemas aquí. No sé si te das cuenta, pero un usuario puede ejecutar cualquier comando en la base de datos con tu API. No sé si existe ese nombre, pero tiene una vulnerabilidad de inyección de Mongo. Nunca antes había visto algo así, ejecutar explícitamente métodos aleatorios proporcionados por el usuario con datos aleatorios en una base de datos en vivo.

Busque la paginación, clasificación, etc. de Mongoose para las API REST en Node y encontrará mucha información sobre cómo hacerlo correctamente.

Hay algunos módulos que pueden ayudarte con eso:

  • https://www.npmjs.com/package/mongoose-paginate
  • https://www.npmjs.com/package/mongoose-paginator
  • https://github.com/expressjs/express-paginate
about 4 years ago · Santiago Trujillo 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