Я пишу reset password
конечную точку в node js. Я использую следующую стратегию.
- Создать 5 di git случайное число
- отправить это случайное число пользователю по электронной почте
- Сгенерировать токен и сохранить его в браузер приготовить ie с истечением 30 минут.
- Также сохранить токен и случайное число в базе данных (mongoDB)
Проблема в том, что пользователь не отвечает на электронное письмо в течение 30 мин. Как я могу автоматически удалить токен и случайное число (ничего больше) из пользовательского документа через 30 минут. Или, если есть другой способ выполнить этот процесс?
Я использую модуль mongoose
с express
.
следующий мой код
router.post('/password/reset', async (req,res)=>
{
if(!req.body.email)
{
return res.status(400).send({err: "Please Enter Email"})
}
try
{
const user = await User.findOne({email: req.body.email});
if(!user)
{
return res.status(404).send({err: "Email Not Found"})
}
if(!user.verify)
{
return res.status(400).send({err: "Please Verify your email"})
}
const resetCode = Math.floor(Math.random()*90000)+10000;
await Email.sendEmail(req.body.email, resetCode, (err,response)=>
{
if(err)
{
return res.status(500).send({err});
}
else if(response)
{
user.resetCode = resetCode;
const token = user.generateAuthToken();
user.resetConfirm = token;
var date = new Date();
date.setTime(date.getTime()+ (30*60*1000));
res.cookie("resetConfirm", token, {expires: date});
return res.status(200).send({res: response})
}
});
await user.save();
}
catch(err)
{
return res.status(500).send({err: "Server is not responding"})
}
})