Estoy intentando crear una ruta para que los usuarios puedan verificar los perfiles de otros usuarios. Sin embargo, quiero que se acceda a estos perfiles a través de 2 URL diferentes /profile/nickname
y /profile/id
para que se pueda acceder a un perfil mediante el nombre de usuario o la identificación del usuario. He probado el siguiente código:
app.get("/profile/:id", function(req, res) {
User.findOne({ $or : [{ "nickname": req.params.id },{ "_id": req.params.id }] }, function(err, user) {
if(user)
{
res.render('users/profile.jade', {
locals: {
currentUser: user,
title: user.nickname +"'s Profile",
jsf:[],
}
});
}
else
{
res.render('404.jade', {
status: 404,
title: 'Page Not Found',
jsf: []
});
}
});
});
El problema es que parece que sólo se está trabajando con el ello y no con el apodo, lo que significa que si ACCES trabajan /profile/4f4ae474546708b219000005
cosas, pero si accedo /profile/mmellad
que es el dado el apodo para ese usuario, obtengo la página 404.
Existe también una cosa más que me di cuenta de que funciona bien para los apodos, que está cambiando la consulta de
User.findOne({ $or : [{ "nickname": req.params.id },{ "_id": req.params.id }] }
a
User.findOne({ "nickname": req.params.id } }
en este caso /profile/mmellado
funciona bien, pero el uso de la la identificación del usuario obviamente no.
¿Cuál sería la forma correcta de hacerlo? Estoy pensando que puedo estar usando un enfoque equivocado.
Otra cosa a mencionar es que si intento el siguiente código en la consola mongo, que funciona bien, así:
x = db.users.findOne({ $or: [ {nickname:"mmellado"}, {_id:ObjectId("4f4ae474546708b219000005")} ]})
He probado que el código insertando el apodo derecho y un _id mal, entonces probados con un apodo incorrecto y _id derecho. En ambos casos, x terminó conteniendo el objeto para el registro que necesitaba.
Creo que puedo arreglarlo con una ruta adicional, pero soy nuevo en Node.js y Express all together así que no estoy seguro de cuál sería el enfoque adecuado.
Gracias!
¿Qué versión de mongo estás usando? –
versión Mongo es la siguiente: Marcos-Mellados Imac-2: ~ $ marcos mongod --version versión db v2.0.2, la versión 4.5 pdfile Lun Feb 27 Versión 02:48:11 git: 514b122d308928517f5841888ceaa4246a7f18e3 –