ExpressJS: как отправить данные на URL - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть почтовый запрос, который перенаправляет на новый маршрут, как вы можете видеть

 //POST login 
 app.post('/login', urlencodedParser, function(req,res){
    userLogin(req.body, function(response){
        if(response == true){
            //Activate player login in db
            loginPlayerDB(req.body.username);
            getPlayerId(req.body.username, function(id){
                res.redirect(req.baseUrl + '/:id/profile');
            });
        } else{
            res.send(500, "Username or Password is incorrect");
        }
    })
});

Эта функция вызывается

 function getPlayerId(username, callback){
    let sql = "SELECT PlayerId FROM users WHERE Username = (?)";
    var values = [username];
    db.query(sql, values, function(err, result, fields){
        if(err){
            console.log(err);
        } else{
               return callback(result);
        }
    })
}

Она перенаправляет на этот маршрут

app.get('/:id/profile', function(req,res){
    res.render('profile/profile');
})

Все прекрасно работает, за исключением того, что URL на новой странице -

http://localhost:3000/:id/profile

Когда должно быть что-то вроде

http://localhost:3000/6/profile

Если у игрока есть идентификатор 6. Как сделатьЯ исправляю это

// Решение.

Спасибо MadWard за помощь.Моя ошибка заключалась в том, что в моей функции getPlayerId я возвращаю результат, который является массивом, а не result [0] .PlayerId, чтобы получить конкретный идентификатор, который я искал

1 Ответ

0 голосов
/ 19 февраля 2019

Вы буквально перенаправляете на /:id/profile.Это строка, она исправлена ​​и всегда будет '/:id/profile'.

Вместо этого вы хотите использовать строки шаблона :

        getPlayerId(req.body.username, function(id){
            res.redirect(`${req.baseUrl}/${id}/profile`);
        });

Используя обычную конкатенацию строк, как вы делали:

        getPlayerId(req.body.username, function(id){
            res.redirect(req.baseUrl + '/' + id + '/profile');
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...