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

383
Vistas
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 Respuestas
Responde la pregunta

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 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