UnhandledPromiseRejectionWarning : TypeError : 정의되지 않은 속성 'password'를 읽을 수 없습니다.

Darsan357

이것은 내 로그인 코드입니다. 사용자 입력 암호와 저장된 암호를 비교하는 동안 처리되지 않음을 약속합니다.

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입니다 ..

업데이트 됨 데이터 베이스

console.log

게릭 P

promisify db.query그렇게 할 수 있도록 제안하고 싶습니다. await그러면 오류가 catch블록 에서 제대로 잡히고 코드가 평평해질 것입니다.

귀하의 오류는 속성 에 액세스하려고 할 때 발생하며 results[0]이는 빈 배열 임을 의미합니다 .undefinedpasswordresults

의 두 번째 인수는 queryObject하지만이 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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관