ExpressJS:如何将数据发送到URL

时间:2019-02-18 21:25:00

标签: node.js express

我有一个发帖请求,您可以将其重定向到新路线

 //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

如果播放器的ID为6。如何解决此问题

//解决方案。

感谢MadWard的帮助。我的错误是,在我的getPlayerId函数中,我返回的是结果数组,而不是result [0] .PlayerId,以便获取我正在寻找的特定ID

1 个答案:

答案 0 :(得分:1)

您实际上是重定向到/: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');
        });