Próbuję utworzyć trasę dla użytkowników, aby móc sprawdzać profile innych użytkowników. Jednak chcę, aby te profile były dostępne za pośrednictwem dwóch różnych adresów URL: /profile/nickname
i /profile/id
, aby umożliwić odczyt profilu za pomocą pseudonimu użytkownika lub identyfikatora użytkownika. Próbowałem następujący kod:
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: []
});
}
});
});
Problem polega na tym, wydaje się, że działa tylko z identyfikatorem, a nie z pseudonimu, co oznacza, że jeśli acces /profile/4f4ae474546708b219000005
wszystko działa, ale jeśli mam dostępu /profile/mmellad
który jest podałem pseudonim dla tego użytkownika, otrzymuję stronę 404.
Jest jeszcze jedna rzecz, zorientowali się, że działa dobrze dla pseudonimów, który zmienia zapytanie z
User.findOne({ $or : [{ "nickname": req.params.id },{ "_id": req.params.id }] }
do
User.findOne({ "nickname": req.params.id } }
w tym przypadku /profile/mmellado
działa dobrze, ale przy użyciu identyfikator użytkownika oczywiście nie.
Jaki byłby właściwy sposób, aby to zrobić? Myślę, że mogę używać niewłaściwego podejścia.
Inną rzeczą, aby wspomnieć, że gdy próbuję następujący kod w konsoli Mongo, współpracuje także:
x = db.users.findOne({ $or: [ {nickname:"mmellado"}, {_id:ObjectId("4f4ae474546708b219000005")} ]})
Testowałem tego kodu poprzez wstawienie odpowiedniego pseudonimu i złego _id, a następnie przetestowany ze złym pseudonimem i prawym _id. W obu przypadkach x zakończył się tym, że zawierał obiekt dla potrzebnego rekordu.
Myślę, że mogę go naprawić dodatkową trasą, ale jestem nowy dla Node.js i Express wszystkie razem, więc nie jestem pewien, co byłoby podejście proppera.
Dzięki!
Którą wersję Mongo używasz? –
wersja Mongo jest następujący: Marcos-Mellados-iMac-2: ~ Marcos $ mongod --version db v2.0.2, wersja pdfile 4,5 Pon 27 lutego wersji 02:48:11 git: 514b122d308928517f5841888ceaa4246a7f18e3 –