錯誤代碼
res.cookie 在異步函數外時,可以正常設置,當res.cookie 在異步函數內時不能正常設置。將最后一句res.redirect('/')也放進異步函數中時,可以正常運行。
router.post('/doLogin', (req, res, next) => { var md5 = crypto.createHash('md5'); (async () => { var Users = await myModel.Users.findOne({ where: { userId: req.body.userId, } }); if (Users !== null && Users.psw === md5.update(req.body.psw).digest('base64')) { console.log("OK!"); res.cookie('remember', req.body.userId, { maxAge: 900000, domain: 'localhost' }); } else { console.log("NO!"); res.clearCookie('remember'); } })();
res.redirect('/');
});
改正
router.post('/doLogin', (req, res, next) => { var md5 = crypto.createHash('md5'); (async () => { var Users = await myModel.Users.findOne({ where: { userId: req.body.userId, } }); if (Users !== null && Users.psw === md5.update(req.body.psw).digest('base64')) { console.log("OK!"); res.cookie('remember', req.body.userId, { maxAge: 900000, domain: 'localhost' }); res.redirect('/'); } else { console.log("NO!"); res.clearCookie('remember'); res.redirect('/'); } })(); });