我是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
我在其他类似问题上进行了研究,但在该主题上不清楚,因此我们将不胜感激。谢谢
答案 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
}