Tôi đang cố gắng tạo tuyến đường để người dùng có thể kiểm tra hồ sơ của người dùng khác. Tuy nhiên, tôi muốn các cấu hình này được gắn thông qua 2 url khác nhau /profile/nickname
và /profile/id
để hồ sơ có thể được truy cập bằng cách sử dụng biệt hiệu hoặc id người dùng của người dùng. Tôi đã thử các mã sau:
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: []
});
}
});
});
Vấn đề là, nó có vẻ như nó chỉ được làm việc với các id và không phải với biệt danh, có nghĩa là nếu tôi acces /profile/4f4ae474546708b219000005
mọi thứ làm việc, nhưng nếu tôi truy cập /profile/mmellad
đó là đã đặt biệt hiệu cho người dùng đó, tôi nhận được trang 404.
Ngoài ra còn có một điều nữa tôi đã tìm ra rằng hoạt động tốt cho biệt danh, mà là thay đổi các truy vấn từ
User.findOne({ $or : [{ "nickname": req.params.id },{ "_id": req.params.id }] }
để
User.findOne({ "nickname": req.params.id } }
trong trường hợp này /profile/mmellado
hoạt động tốt nhưng sử dụng id người dùng rõ ràng là không.
Điều gì sẽ là đúng cách để thực hiện việc này? Tôi nghĩ tôi có thể đang sử dụng một cách tiếp cận sai lầm.
Một điều cần đề cập đến được rằng nếu tôi cố gắng đoạn mã sau trong Mongo console, nó hoạt động tốt cũng như:
x = db.users.findOne({ $or: [ {nickname:"mmellado"}, {_id:ObjectId("4f4ae474546708b219000005")} ]})
Tôi đã thử nghiệm mã mà bằng cách chèn các nickname phải và một _id sai, sau đó kiểm tra với biệt hiệu sai và phải _id. Trong cả hai trường hợp, x đã kết thúc chứa đối tượng cho bản ghi mà tôi cần.
Tôi nghĩ rằng tôi có thể khắc phục nó bằng một tuyến đường bổ sung, nhưng tôi mới sử dụng Node.js và Express cùng nhau nên tôi không chắc chắn về cách tiếp cận propper sẽ là gì.
Cảm ơn!
Bạn đang sử dụng phiên bản nào của mongo? –
phiên bản Mongo như sau: Marcos-Mellados-iMac-2: ~ marcos $ mongod --version db phiên bản v2.0.2, phiên bản pdfile 4,5 Mon 27 tháng 2 phiên bản 02:48:11 git: 514b122d308928517f5841888ceaa4246a7f18e3 –