Javascript 尽管使用了db.insert函数,但数据库未更新

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')

我正在使用node mailer软件包在我的express应用程序中创建忘记密码功能,该软件包向用户的电子邮件发送新密码,然后用新密码更新数据库,但问题是数据库没有用新密码更新。我已多次查看代码,但无法找出问题所在

`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))
但我无法理解为什么数据库不使用新密码更新