我正在嘗試爲用戶創建一個路由,以便能夠檢查其他用戶的配置文件。但是,我希望通過兩個不同的網址/profile/nickname
和/profile/id
加入這些配置文件,以便可以通過使用用戶的暱稱或用戶標識來接受配置文件。我嘗試下面的代碼:
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: []
});
}
});
});
的問題是,現在看來似乎是隻與ID而不是與暱稱的工作,也就是說,如果我存取權限/profile/4f4ae474546708b219000005
工作上的事情,但如果我訪問/profile/mmellad
這是給那個用戶的暱稱,我得到了404頁面。
還有一件事我要指出的是暱稱工作得很好,這是改變從
User.findOne({ $or : [{ "nickname": req.params.id },{ "_id": req.params.id }] }
查詢到
User.findOne({ "nickname": req.params.id } }
在這種情況下/profile/mmellado
工作正常,但使用用戶ID顯然不是。
什麼是正確的方法來做到這一點?我在想我可能會用錯方法。
另一件事一提的是,如果我嘗試在蒙戈控制檯下面的代碼,它工作正常,以及:
x = db.users.findOne({ $or: [ {nickname:"mmellado"}, {_id:ObjectId("4f4ae474546708b219000005")} ]})
我插入正確的暱稱和一個錯誤的_id測試的代碼,然後測試用一個錯誤的暱稱和正確的_id。在這兩種情況下,x最終都包含了我需要的記錄的對象。
我想我可以用一條額外的路徑修復它,但我是新來的Node.js和所有一起表達,所以我不知道propop方法會是什麼。
謝謝!
你在用什麼版本的mongo? – 2012-02-27 08:17:03
蒙戈的版本是這樣的: 馬科斯Mellados的iMac-2:〜馬科斯$ mongod的--version 分貝版本V2.0.2,pdfile 4.5版 週一02月27日2點48分十一秒Git版本:514b122d308928517f5841888ceaa4246a7f18e3 – 2012-02-27 08:48:45