Nodejs Mysql:在另一条路由中访问变量

时间:2018-07-21 10:48:09

标签: javascript mysql node.js express

我正在构建一个简单的电子钱包系统,该系统可以接收用户的电话号码,并从数据库中查询用户的钱包并显示余额;我建立了一个接收电话号码的表格,并使用该号码查询数据库中的用户ID,并使用该ID查询他/她的电子支付钱包ID,但是我无法将钱包传递给获取请求以呈现钱包余额和用户名

router.post('/',function (req, res, next) {
  var sql = `SELECT UsrID FROM users WHERE UsrPhone =  ${req.body}`;
  var query = connection.queryValue(sql, function (err, userid) {
    if(err) throw err;
    console.log('User ID: ' + userid);

    var sql = `SELECT * FROM wallet WHERE UserID = ${userid}`;
    var query = connection.queryRow(sql, function (err, wallet) {
      if(err) throw err;
      console.log('WalletID: ' + wallet.WalletID);
      //send walletID to get route
      res.redirect('/wallet/:id');
    });
  });
});

router.get('/wallet/:id', function (req, res, next) {
  var sql = `SELECT * FROM wallet WHERE WalletID = ${wallet.WalletID}`;
  var query = connection.queryRow(sql, function (err, wallet) {
    if(err) throw err;
    res.render('wallet', {title: 'Wallet', wallet});
  });
});

但它似乎不起作用

1 个答案:

答案 0 :(得分:1)

您没有将当前的WalletID传递给重定向路由。您应该传递id来重定向URL,如下所示:

res.redirect('/wallet/' + wallet.WalletID);

因此,wallet/:id可以获取当前的WalletID并以此为基础进行查询。

您可以这样运行查询:

  var sql = `SELECT * FROM wallet WHERE WalletID = ${req.params.id}`;