이것은 내 로그인 코드입니다. 사용자 입력 암호와 저장된 암호를 비교하는 동안 처리되지 않음을 약속합니다.
exports.login = (req, res) => {
try {
const {email, password} = req.body
console.log(req.body)
if(!email || !password) {
return res.status(400).render('login', {
message: 'Please Provide an email and password'
})
}
db.query('SELECT * FROM users WHERE email = ? ',{email}, async (error, results) => {
console.log(error)
console.log(results)
if( !results || !(await bcrypt.compare(password, results[0].password)) ) {
res.status(401).render('login', {
message: 'Email or Password is Incorrect'
})
}
})
} catch (error) {
console.log(error)
}
}
Console.log (error)가 null입니다 ..
promisify
db.query
그렇게 할 수 있도록 제안하고 싶습니다. await
그러면 오류가 catch
블록 에서 제대로 잡히고 코드가 평평해질 것입니다.
귀하의 오류는 속성 에 액세스하려고 할 때 발생하며 results[0]
이는 빈 배열 임을 의미합니다 .undefined
password
results
의 두 번째 인수는 query
안 Object
하지만이 Array
때문에 교체 { email }
와 함께 [email]
:
const {
promisify
} = require('util');
const query = promisify(db.query.bind(db));
exports.login = async (req, res) => {
try {
const {
email,
password
} = req.body;
if (!email || !password) {
return res.status(400).render('login', {
message: 'Please Provide an email and password'
});
}
const results = await query('SELECT * FROM users WHERE email = ? ', [email]); // problem occur due to usage of curly brackets.
if (!results || !(await bcrypt.compare(password, results[0].password))) {
res.status(401).render('login', {
message: 'Email or Password is Incorrect'
});
}
} catch (error) {
console.log(error);
}
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다