将查询结果传递给外部变量

时间:2018-11-07 16:32:24

标签: node.js express

我是node.js的新手,我正在尝试为我的应用创建重置密码模块。我陷入了一个想在查询之外访问结果的问题。

router.post('/forgot',(req,res)=>{
  const db = require('../db.js');
  if (req.body.email !== undefined) {
    var emailAddress = req.body.email;
    // TODO: Using email, find user from your database.
    db.query('SELECT * FROM users WHERE email = ?',[emailAddress],(err,results,fields)=>{
      if(err){
        console.log('Error in pulling the information of the user from the database');
      }

      var  userid = results[0].id;
      console.log(userid);
    });
    var payload = {
        id: userid,        // User ID from database
        email: emailAddress
    };
    console.log(payload);
} else {
    res.send('Email address is missing.');
}
});

我想从数据库中获取 userid 的值,并将其传递给外部变量 payload 并将其存储在

  

id:用户ID

我在其他类似问题上进行了研究,但在该主题上不清楚,因此我们将不胜感激。谢谢

1 个答案:

答案 0 :(得分:1)

您在此处使用回调函数来获取查询结果,这意味着在查询运行后它将继续并遍历参数(err, results, fields) => { ... }中的函数,因此您可以您可以在该回调函数中建立有效负载,而在该回调函数中您已经在results[0].id上拥有了该用户ID,或者以该用户ID作为参数调用了该回调中的另一个函数。

类似这样的东西

router.post('/forgot', (req, res) => {
    const db = require('../db.js');
    if (req.body.email !== undefined) {
        var emailAddress = req.body.email;
        // TODO: Using email, find user from your database.
        db.query('SELECT * FROM users WHERE email = ?', [emailAddress], (err, results, fields) => {
            if (err) {
                console.log('Error in pulling the information of the user from the database');
            }

            var userid = results[0].id;
            console.log(userid);


            buildPayload(userid, emailAddress)
        });
    } else {
        res.send('Email address is missing.');
    }
});

buildPayload(userId, emailAddress) {
    var payload = {
        id: userId,        // User ID from database
        email: emailAddress
    };
    console.log(payload);


    // whatever else you need to do
}
相关问题