고양이와 코딩

[리액트를 다루는 기술] data and hash arguments required 에러 해결 본문

javascript

[리액트를 다루는 기술] data and hash arguments required 에러 해결

ovovvvvv 2024. 1. 26. 23:41
728x90

로그인 api를 구현하던 중, 코드 자체에서는 에러가 나지 않았는데 postman으로 body값에 아이디와 비밀번호를 입력하니

500에러가 발생하며 Error: data and hahs arguments required 라는 에러가 발생했다 !! 

 

export const login = async ctx => {
    const { username, password } = ctx.request.body;

    // username, password가 없으면 에러 처리
    if (!username || !password){
        ctx.status = 401; // Unauthorized
        return;
    };

    try {
        const user = await User.findByUsername(username);
        // 계정이 존재하지 않으면 에러 처리
        if(!user){
            ctx.status = 401;
            return;
        }
        const valid = await user.checkPassword(password);
        // 잘못된 비밀번호
        if (!valid) {
            ctx.status = 401;
            return;
        }
        console.log(valid);
        ctx.body = user.serialize();
    } catch (e) {
        ctx.throw(500, e);
    }
}

코드는 위와 같다.

 

먼저 console.log(user)로 콘솔을 확인 해 보자 

이와 같이 user정보가 불러와졌다!

그렇다면 계정이 확인된건데,, 왜 그 다음으로 넘어가지 못하는걸까 🥲

 

파일을 20번정도 왔다갔다 하고 난 후 이유를 찾았다. 

UserSchema.methods.checkPassword = async function(password) {
    const result = await bcrypt.compare(password, this.hashedPassword);
    return result;
};

위의 console로 찍어 본 사용자 객체에서는 hashedpassword로 정의되어 있는 것을 확인할 수 있다. 

그러나 스키마 정의에서는 hashedPassword로 정의되어 있기 때문에 ,,, 👾

this.hashedPassword에 undefined 값이 들어가서 data and hash arguments required 오류가 발생한 것이다!

 

 

흑흑 이름 다른것도 알려주면 안될까