회원가입시 password를 bcrypt로 단방향 암호화를 한뒤 DB에 저장을 해주고 select 문을 사용해서
email로 조건을 주어 password를 꺼내려고 했다.
단순하게 SELECT문에서 password만 써주면 password만 뽑아내는 줄 알았지만 다른 users table에 들어 있는 값도 나오기 때문에 해당에러가 hash는 string 형식으로 다루라고 Error문이 나온다. <- object로 인식 되었기 때문에
SELECT문은 배열형식으로 데이터가 나오는 것이다.
문제 코드
//userDao.js
const getUserByEmail = async (email) => {
try {
const password = await appDataSource.query(
`SELECT
id,
email,
password
FROM users
WHERE users.email = ?`,
[email]
);
return password;
}
...
}
//userService.js
const hashedPassword = await userDao.getUserByEmail(email);
const match = await bcrypt.compare(password, hashedPassword );
>>Error
그래서
//userDao.js
const [user] = await appDataSource.query(
`SELECT
id,
email,
password
FROM users
WHERE users.email = ?`,
[email]
);
//userService.js
const user = await userDao.getUserByEmail(email);
const match = await bcrypt.compare(password, user.password);
이러한 객체형식으로 다 받아서 key 값으로 password를 받아와서 받아온 값과 사용자가 입력한 p/w를 비교해서 true/false 값을 가져올
수 있습니다.
'JAVASCRIPT' 카테고리의 다른 글
회원가입 및 포스팅 후기 (0) | 2023.03.30 |
---|---|
Bcrypt - 단방향 암호화 (0) | 2023.03.29 |
구조분해할당-기초?예시 (0) | 2023.03.27 |
app.get VS router.get (0) | 2023.03.26 |
RegExp(정규표현식) (0) | 2023.03.25 |