我的应用程序有两个路由设置,
app.get('/', routes.index);
app.get('/:name', routes.index);
我希望如果我不指定参数(例如直接访问appurl.com或localhost:3000),它可以加载默认用户,但是如果我指定参数(例如localhost:3000/user),则将该参数作为“用户名”变量用于下面的函数(放置在我的路由之后)。
(function getUser(){
var body = '',
username = 'WillsonSM',
options = {
host: 'ws.audioscrobbler.com',
port: 80,
path: '/2.0/?method=user.gettopartists&user=' + username + '&format=json&limit=20&api_key=APIKEYGOESHERE'
};
require('http').request(options, function(res) {
res.setEncoding('utf8');
res.on('data', function(chunk) {
body += chunk;
});
res.on('end', function() {
body = JSON.parse(body);
artists = body.topartists.artist;
});
}).end();
})();
除此之外,我已经设置好了我的路由,如下所示:
exports.index = function(req, res){
res.render('index', { title: 'LasTube' });
username = req.params.name;
console.log(username);
};
很遗憾,将用户名设置为req.params.name
似乎无法从主应用程序函数中访问。
我的问题是:如何设置expressjs/nodejs以使用通过/name设置的参数(如果可用),并在不可用时仅使用默认值 - 在此示例中为“WillsonSM”。
我尝试将“用户名”从主应用程序中拿出来,只留在函数中,但是由于路由无法访问它,因此用户名变为未定义,应用程序将无法运行。我可以通过路由的console.log输出“username”,因此在那里分配它不是问题,但是由于我是expressjs的新手,我不知道应该如何处理这个问题。我已经尝试了我能想到的和从互联网上找到的所有方法。
另外,如果有更好的方法或者我做错了什么,请告诉我。如果我遗漏了任何信息,请留下评论,我会尽力解决。