Javascript 尽管使用了db.insert函数,但数据库未更新
我正在使用node mailer软件包在我的express应用程序中创建忘记密码功能,该软件包向用户的电子邮件发送新密码,然后用新密码更新数据库,但问题是数据库没有用新密码更新。我已多次查看代码,但无法找出问题所在Javascript 尽管使用了db.insert函数,但数据库未更新,javascript,node.js,express,npm,knex.js,Javascript,Node.js,Express,Npm,Knex.js,我正在使用node mailer软件包在我的express应用程序中创建忘记密码功能,该软件包向用户的电子邮件发送新密码,然后用新密码更新数据库,但问题是数据库没有用新密码更新。我已多次查看代码,但无法找出问题所在 `app.post('/forgot', (req, res) => { const { email } = req.body; let newPassword = generatePassword(); db.select('*').from('login')
`app.post('/forgot', (req, res) => {
const { email } = req.body;
let newPassword = generatePassword();
db.select('*').from('login')
.where('email', '=', email)
.returning('*')
.then(user => {
if (user.length > 0) {
let mailOptions = {
from: 'haroonrmit@gmail.com',
to: `${email}`,
subject: 'Password reset',
html: `<p>Your new password is ${newPassword}</p>`
};
transporter.sendMail(mailOptions);
db('login')
.where({email: user[0].email})
.update({
password: newPassword
})
res.json(user[0]);
} else {
res.status(404).json('email not found');
}
})
});`
`app.post('/forget',(req,res)=>{
const{email}=req.body;
让newPassword=generatePassword();
db.select('*')。from('login'))
.where('email','=',email)
。正在返回(“*”)
。然后(用户=>{
如果(user.length>0){
让邮件选项={
发件人:'haroonrmit@gmail.com',
收件人:`${email}`,
主题:“密码重置”,
html:`您的新密码是${newPassword}`
};
transporter.sendMail(邮件选项);
数据库('登录')
.where({email:user[0].email})
.更新({
密码:newPassword
})
res.json(用户[0]);
}否则{
res.status(404.json)(“未找到电子邮件”);
}
})
});`
您没有调用。然后,对于第二个查询,它已生成,但从未运行过
此外,您的http在知道更新是否成功执行之前会返回一个值。很抱歉键入了它的db.update im,使用PostgreSqlWhere('email','=',email')和.where({email:user[0].email})之间有什么区别。他们做同一件事的方式不同吗?是的,做同一件事有多个语法你试过调试吗
.update({password:newPassword})。然后(v=>console.log(v,'records updated')).catch(err=>console.error('error update password:',err))
但我无法理解为什么数据库不使用新密码更新