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

302
Views
¿Cómo verificar una identificación de objeto válida en mongoose?

Tengo una ruta que devuelve una historia particular de una identificación de objeto. Cuando intento probarlo, me da algunos errores. El código dentro del bloque if no se está ejecutando de alguna manera.

 router.get("/:id",async (req,res) => { try{ if (!isValidObjectId(req.params.userId)) { res.status(401).json({ message: "Invalid object id", success: false }) throw new Error("Invalid object id") } let story = await Story.findById(req.params.id) .populate('user') .lean() if (!story) { return res.status(404).json({ message: "Story not found", success: false }) } const text = convert(story.body, { wordwrap: null }); res.render('stories/show',{ story, title: `${story.title} Storybooks`, desc: `${text}` }) } catch(err) { console.error(err) } })

No quiero ejecutar la consulta si la identificación no es válida, diga /stories/blabla

¿Cómo puedo hacer eso?

Su respuesta es apreciada.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Para aquellos de ustedes que luchan con el problema, aquí hay un ahorro de tiempo:

Primero, usamos el método isValid en mongoose.Types.ObjectId y luego, como segundo control, creamos una identificación de objeto real y la comparamos como una cadena.

Así es como lo importarías y lo usarías:

 const mongoose = require('mongoose'); const {Types: {ObjectId}} = mongoose; const validateObjectId = (id) => ObjectId.isValid(id) && (new ObjectId(id)).toString() === id; //true or false

En cuanto a responder a mi propia pregunta:

 const mongoose = require('mongoose'); const {Types: {ObjectId}} = mongoose; const validateObjectId = (id) => ObjectId.isValid(id) && (new ObjectId(id)).toString() === id; //true or false // @desc Show a single story // @route GET /stories/:id router.get("/:id",async (req,res) => { try{ if (!validateObjectId(req.params.id)) { throw Error("Invalid object Id") } let story = await Story.findById(req.params.id) .populate('user') .lean() if (!story) { return res.status(404).json({ message: "Story not found", success: false }) } const text = convert(story.body, { wordwrap: null }); res.render('stories/show',{ story, title: `${story.title} Storybooks`, desc: `${text}` }) } catch(err) { console.error(err) } })

EDITAR:

Usé req.params.userId en lugar de req.params.id, por lo que el método anterior está totalmente bien.

Pero acabo de aprender una nueva forma de hacerlo.

about 4 years ago · Juan Pablo Isaza 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!