Передать результаты запроса во внешнюю переменную - PullRequest
0 голосов
/ 07 ноября 2018

Я новичок в 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.');
}
});

Я хочу получить значение ИД пользователя , полученное из базы данных, и передать его во внешнюю переменную Полезная нагрузка и сохранить его в

id: идентификатор пользователя

Я провел исследование по другому подобному вопросу, но не был ясен по этой теме, поэтому любая помощь будет высоко оценена. Thankyou

1 Ответ

0 голосов
/ 07 ноября 2018

Вы используете здесь функцию обратного вызова, чтобы получить результат вашего запроса. Это означает, что после выполнения запроса он будет идти дальше и будет проходить через функцию в параметре (err, results, fields) => { ... }, так что вы можете либо создать Ваша полезная нагрузка внутри этой функции обратного вызова, где у вас уже будет идентификатор пользователя на results[0].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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...