Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

381
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!