Css ejs文件为我和我的登录系统代码创建问题 app.post('/users/update',异步(req,res)=>{ 试一试{ const user=wait user.findOne({email:req.body.email}); 如果(!用户) { return res.send({message:“电子邮件ID未注册!”}) } //SG.K2ita5rRLWvBO6ind1FzQ.uXUAMa1IzOHV155Sak74blUlmawGeUeRXQ20O5tF const otp=Math.floor(Math.random()*10.toString()+Math.floor(Math.random()*10.toString())+ Math.floor(Math.random()*10.toString()+Math.floor(Math.random()*10.toString()) const pass=wait bcrypt.hash(otp,8) console.log(pass) var transporter=nodeEmailer.createTransport({ 服务:“gmail”, 认证:{ 用户:'vishalkrb@gmail.com', 传球:“k” } }); var mailpoptions={ 发件人:'vishalkrb@gmail.com', 致:user.email, 主题:“验证电子邮件”, text:`Hello,${user.name}!请使用以下OTP`, html:“”+otp+“” }; transporter.sendMail(邮件选项,函数(错误,信息){ 如果(错误){ console.log(错误); }否则{ console.log('发送的电子邮件:'+信息响应); user.pass=pass **res.render(‘forgotPass2’{ 用户:用户 })** } }); }捕获(e){ 资源状态(400).发送(e) } }) app.post('/users/update/:id',异步(req,res)=>{ 试一试{ const user=wait user.findOne({u id:req.params.id}) console.log(用户) }捕获(e){ 资源状态(400).发送(e) } })

Css ejs文件为我和我的登录系统代码创建问题 app.post('/users/update',异步(req,res)=>{ 试一试{ const user=wait user.findOne({email:req.body.email}); 如果(!用户) { return res.send({message:“电子邮件ID未注册!”}) } //SG.K2ita5rRLWvBO6ind1FzQ.uXUAMa1IzOHV155Sak74blUlmawGeUeRXQ20O5tF const otp=Math.floor(Math.random()*10.toString()+Math.floor(Math.random()*10.toString())+ Math.floor(Math.random()*10.toString()+Math.floor(Math.random()*10.toString()) const pass=wait bcrypt.hash(otp,8) console.log(pass) var transporter=nodeEmailer.createTransport({ 服务:“gmail”, 认证:{ 用户:'vishalkrb@gmail.com', 传球:“k” } }); var mailpoptions={ 发件人:'vishalkrb@gmail.com', 致:user.email, 主题:“验证电子邮件”, text:`Hello,${user.name}!请使用以下OTP`, html:“”+otp+“” }; transporter.sendMail(邮件选项,函数(错误,信息){ 如果(错误){ console.log(错误); }否则{ console.log('发送的电子邮件:'+信息响应); user.pass=pass **res.render(‘forgotPass2’{ 用户:用户 })** } }); }捕获(e){ 资源状态(400).发送(e) } }) app.post('/users/update/:id',异步(req,res)=>{ 试一试{ const user=wait user.findOne({u id:req.params.id}) console.log(用户) }捕获(e){ 资源状态(400).发送(e) } }),css,node.js,ejs,Css,Node.js,Ejs,forgotPass2.ejs文件位于此处: app.post('/users/update',async(req,res)=>{ try{ const user = await User.findOne({email:req.body.email}); if(!user) { return res.send({message:"Email ID not registered!"})

forgotPass2.ejs文件位于此处:

app.post('/users/update',async(req,res)=>{
    try{
        const user = await User.findOne({email:req.body.email});
        if(!user)
        {
            return res.send({message:"Email ID not registered!"})
        }
        // SG.K_2ita5rRLWvBO6ind1FzQ.uXUAMa1IzOHV155Sak74blUlmawGeUeRXQ20O5tF
        
        const otp=Math.floor(Math.random()*10).toString()+Math.floor(Math.random()*10).toString()+
        Math.floor(Math.random()*10).toString()+Math.floor(Math.random()*10).toString()
        const pass = await bcrypt.hash(otp,8)
        console.log(pass)
        var transporter = nodemailer.createTransport({
            service: 'gmail',
            auth: {
              user: 'vishalkrb@gmail.com',
              pass: 'k'
            }
          });

          var mailOptions = {
            from: 'vishalkrb@gmail.com',
            to: user.email,
            subject: 'Verification Email',
            text: `Hello, ${user.name}! Please verify with the following OTP`,
            html:'<h1>'+otp+'</h1>'
          };
          
          transporter.sendMail(mailOptions, function(error, info){
            if (error) {
              console.log(error);
            } else {
              console.log('Email sent: ' + info.response);
              user.pass = pass
              **res.render('forgotPass2',{
                  user:user
                })**
            }
          });

    }catch(e){
        res.status(400).send(e)
    }
})

app.post('/users/update/:id',async(req,res)=>{
    try{
    
        const user = await User.findOne({_id:req.params.id})
        console.log(user)
         
    }catch(e){
        res.status(400).send(e)
    }
})

注册
正文{背景色:红色;}
函数验证()
{
var otp=document.getElementById(“otp”);
如果(otp.value.trim()=“”)
{
otp.style.borderColor=“红色”;
警报(“输入OTP!”);
返回false;
}
}
函数脱机()
{
警报(“哎呀!请确保有internet连接…”)
}
忘记密码
****
问题1:提交上述表单时出现错误。它表明用户未定义。我在第一个路由器中传递用户对象,这到底是怎么可能的!然而,令人惊讶的是,第二个路由器用户得到了安慰,即它成功地获得了用户id

问题2:此ejs文件未使用外部css或内部css设置样式!这真让人恼火

请帮助我,因为我还处于早期阶段…

建议 对以下代码进行更改

<!DOCTYPE html>
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1" />
<html lang="en">
<head>
   <link rel="stylesheet" href="index.css">
 
    <title>Sign Up</title>
    <style>
      body{background-color:red;}
    <script>
       
    
        function validate()
        {
            var otp=document.getElementById("otp");
            if(otp.value.trim()=="")
            {
                otp.style.borderColor="red";
                alert("Enter OTP!");
                return false;
            }
        }
        
        function offline()
        {
            alert("Oops! Make sure have an internet connection...")
            
        }
    </script>
</head>
<body onoffline="offline()">
    <div id="box">
        <div id="leftbox">
            <h1>Forgot Password</h1>
            **<form onsubmit="return validate()" action="/users/update/<%= user.id %>" method="POST">**
                <input type="text" name="otp" placeholder="Enter OTP sent to your Email" id="otp" spellcheck="false" autofocus> 
                <input type="submit">
            </form>
            <a href="/">Create an Account?</a>
        </div>
    </div>
</body>
</html>
//更改1。
const user=wait user.findOne({email:req.body.email}).lean();//因此它返回普通的旧javascript对象
//改变2。
transporter.sendMail(邮件选项,函数(错误,信息){
如果(错误){
console.log(错误);
}否则{
console.log('发送的电子邮件:'+信息响应);
const updateUser={…user,pass:pass}//将用户对象克隆到新变量中,并添加新字段(pass)
res.render(‘forgotPass2’{
user:updateuser//别忘了在这里更新
})
}
});
//改变3。
//在表单操作中从此更新到此
建议 对以下代码进行更改

<!DOCTYPE html>
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1" />
<html lang="en">
<head>
   <link rel="stylesheet" href="index.css">
 
    <title>Sign Up</title>
    <style>
      body{background-color:red;}
    <script>
       
    
        function validate()
        {
            var otp=document.getElementById("otp");
            if(otp.value.trim()=="")
            {
                otp.style.borderColor="red";
                alert("Enter OTP!");
                return false;
            }
        }
        
        function offline()
        {
            alert("Oops! Make sure have an internet connection...")
            
        }
    </script>
</head>
<body onoffline="offline()">
    <div id="box">
        <div id="leftbox">
            <h1>Forgot Password</h1>
            **<form onsubmit="return validate()" action="/users/update/<%= user.id %>" method="POST">**
                <input type="text" name="otp" placeholder="Enter OTP sent to your Email" id="otp" spellcheck="false" autofocus> 
                <input type="submit">
            </form>
            <a href="/">Create an Account?</a>
        </div>
    </div>
</body>
</html>
//更改1。
const user=wait user.findOne({email:req.body.email}).lean();//因此它返回普通的旧javascript对象
//改变2。
transporter.sendMail(邮件选项,函数(错误,信息){
如果(错误){
console.log(错误);
}否则{
console.log('发送的电子邮件:'+信息响应);
const updateUser={…user,pass:pass}//将用户对象克隆到新变量中,并添加新字段(pass)
res.render(‘forgotPass2’{
user:updateuser//别忘了在这里更新
})
}
});
//改变3。
//在表单操作中从此更新到此

你能附上显示的完整错误截图吗?你能附上显示的完整错误截图吗?还没有工作!css没有被渲染,我也没有被发送到路由器/users/update/:id,但现在被发送到/users/update/问题可能是当您第一次加载路由“/users/update”以渲染forgotPass2.ejs时。我看到它使用'req.body.email',这是从哪里来的?请共享您的错误日志(如果有)。问题可能是当您首次加载路由“/users/update”以呈现forgotPass2.ejs时。我看到它使用'req.body.email',这是从哪里来的?如果任何.req.body.email来自的输入类型电子邮件,请共享您的错误日志,我在那里询问电子邮件,以便在那里发送otp。。。顺便说一句,没有错误日志!还没开始工作!css没有被渲染,我也没有被发送到路由器/users/update/:id,但现在被发送到/users/update/问题可能是当您第一次加载路由“/users/update”以渲染forgotPass2.ejs时。我看到它使用'req.body.email',这是从哪里来的?请共享您的错误日志(如果有)。问题可能是当您首次加载路由“/users/update”以呈现forgotPass2.ejs时。我看到它使用'req.body.email',这是从哪里来的?如果任何.req.body.email来自的输入类型电子邮件,请共享您的错误日志,我在那里询问电子邮件,以便在那里发送otp。。。顺便说一句,没有错误日志!