私のアプリでは、2つのルートを設定しています。
app.get('/', routes.index);
app.get('/:name', routes.index);
パラメータを指定しない場合、たとえばappurl.com(localhost:3000)にアクセスすると、デフォルトのユーザーが読み込まれるようにしたいと思いますが、param(localhost:3000 /user)を指定すると)、それを次の関数の変数「username」として使用します(私のルートの後に配置されます)。
(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」です。
メインアプリから「username」を取り出して関数に残してみましたが、ルートからアクセスできないため、usernameが未定義になり、アプリが実行されません。ルートconsole.logを介して「ユーザー名」を吐き出すことができるので、それを割り当てることは問題ありませんが、expressjsを初めて使用するため、これをどのように行うべきかわかりません。私はインターネットを見回して考え、見つけることができるすべてを試しました。
また、これを行うためのより良い方法がある場合、または私が何か間違ったことをしている場合は、私に知らせてください。情報を省略した場合は、コメントを入力してください。対処しようと思います。