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) } })
forgotPass2.ejs文件位于此处: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!"})
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。。。顺便说一句,没有错误日志!