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

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

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