javascript - 使用用户名的 Expressjs 路由

标签 javascript node.js routes express

我正在尝试使用用户名作为 expressjs 中的路由,以查看他们的个人资料。

app.get('/:username', function (req, res, next) {
    users.get_user(req.params.username, function (err, results) {
        if(results[0]) {
            res.render('/profile', {
                title: 'Profile',
                userinfo: results[0]
            });
        } else {
            next();
        }
    });
});

users.get_user 是一个从数据库中获取用户的函数。如果它没有找到用户,它将继续到下一条路线。我还有很多其他页面,例如 /start/forum 等。这样做是否不够充分,因为每次通过时都会调用 db通过 /:username 路由。我的问题是,有没有更好更充分的方法?

最佳答案

尝试在应用程序中的 /:username 路由之前定义更具体的路由(例如 /start/forum)。 Express 按照您定义的顺序匹配路由。

例如这样做:

app.get('/start', function(req, res, next) {...});
app.get('/forum', function(req, res, next) {...});
app.get('/:username', function(req, res, next) {...});

不是

app.get('/:username', function(req, res, next) {...});
app.get('/start', function(req, res, next) {...});
app.get('/forum', function(req, res, next) {...});

这样,如果用户转到 /start,它不会命中 /:username 路由并导致数据库命中。

关于javascript - 使用用户名的 Expressjs 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10859036/

相关文章:

javascript - FB.logout() 在没有访问 token 的情况下调用

javascript - 将文本复制到剪贴板,仅限 Firefox,无插件

node.js - npm 安装错误 - npm 错误! cb() 从未调用过,错误代码 0

node.js - 具有未知键和嵌套文档作为值的 Mongoose 模式

javascript - 使用参数链接到路线的正确方法是什么?

javascript - 使用 Javascript 正则表达式检测行尾或字符串结尾

javascript - 类型错误 : Object #<IncomingMessage> has no method 'render'

java - 使用转发代理从客户端到服务器的 GRPC

symfony - 在 Symfony 中找不到字体文件的路径

javascript - Express 中的动态 URL 和静态路由