filter() 메서드를 이용해서 객체를 걸러내는 방법에 대해서.
app.post('/login',(req,res)=>{
    const {username, password} = req.body;
    const user = database.filter((user)=>{
        return user.username===username;
    })
    if(user.length===0){
        res.send('해당하는 id가 없습니다');
        return;
    }
    if(user[0].password!==password){
        res.send('패스워드가 틀립니다.');
        return ;
    }

    res.send('로그인 성공!');
})

현재 보고있는 유튜브 영상에서 위와 같은 형태로 코드를 작성해서 유저를 회원가입 시키는 형태의 코드를 작성했다. 

그때에 filter() 메서드를 사용하였는데, 해당 영상에서는 이 메서드의 경우 database 에서 filter함수에 제공한 조건이 참인 것들을 배열로 반환하는 함수라고 설명을 해주었다.

 

위 코드에 대해서 gpt에 검색해보았다. 

 

이와 같은 답변을 얻을 수있었고 

filter() 메서드에 대해서 검색해보았다. 

 

위와 같은 답변을 얻을 수 있었는데, 이렇게 간단하게 만드는 형태의 데이터베이스 형태에서는 딱 원하는 정도의 성능과 기능을 제공하는 형태의 로그인이라는 생각이 든다.

 내가 공부하고 있는 자료에서는 로그인시에 아이디는 유일하다는 가정을 하고 로그인을 구현하고 있는데, 

생각해보면 어차피 아이디가 유일하다면, filter를 통해서 모든 database 배열의 각 요소인 user객체를 모두 순회할 필요가 있을까 싶다. 

그렇게 되면 초기에 filter에 로그인 하려는 사람의 아이디가 걸려들더라도, 어차피 유일하다고 가정하는 상황이면

그 뒤는 더 검색해줄 필요가 없을텐데 모든 배열의 원소들에 대해서 순회하면서 확인하지 않을까? 라는 생각이 든다.

 

일단은 아직 더욱 효율적으로 구현할 수 있는 방법이 있는 메서드가 있는지 잘 모르는 상황에서, 이와 같은 filter() 메서드를 만나게 되었는데 일단은 이런 메서드가 있구나, 이런식으로도 로그인을 구현할 수 있구나 알아두고 넘어가도록 하자. 

 

  Comments,     Trackbacks