如何将用户名附加到我的 ./profile/<username> URL 中,以便每个用户都有一个唯一的页面.-意思 -

How can I append a username to my ../profile/<username> URL so each user has a unique page. -MEAN -Jade

本文关键字:用户 有一个 意思 唯一 我的 URL username profile      更新时间:2023-09-26

我负责为每个用户设置个人资料页面。我已经设置了一种路由到"../profile/:用户名",但我无法弄清楚如何为每个用户实际呈现一个唯一的页面。

这是我从索引中得到的.js

router.get('/profile/:userName', function (req, res) {
  //find user object from database
  var userName = req.params.userName;
  var userObject = userlistdb.find({ username: userName });
  //route through to the user's unique profile page
  res.render('profile/' + userObject.username, { ObjectId: userObject._id});});

我的个人资料.jade非常糟糕,所以我不会费心分享。

我们的应用程序连接到远程Mongo数据库,据我所知,它被正确调用。当我从我们的数据库路由到用户页面时,我收到错误"无法在视图目录中查找视图"配置文件/未定义"。因为没有任何用户的/profile/[用户名].jade 文件,所以这不起作用。

如何解决此问题?我是否需要为每个用户创建一个新的 jade 文件?

谢谢

您无法渲染文件profile/:userId,因为它不存在,因此

res.render('profile/' + userObject.username)

将引发异常,但您可以做的是为特定用户呈现profile_page

  • 对数据库调用使用回调,
  • 创建 2-3 视图( error.jade, profile_not_found.jade, profile_page.jade

路由器应该看起来像

router.get('/profile/:userName', function (req, res) {
    //find user object from database
    var userName = req.params.userName;
    //findOne will return single user instance
    userlistdb.findOne({username: userName}, function(err, user){
        if(err){
            //render some error page 
            //pass error, populate view, or just send InternalServerError(500)
            res.render('error', {err: err}); 
        } else if (!user){
            //render 404 or more specific page
            //pass not found username
            res.render('profile_not_found', {username: username}); 
        } else {
            //render user page
            //route through to the user's unique profile page
            res.render('profile_page', {user: user}); //pass user, populate view
        }
    });
});
相关文章: