본문 바로가기
  • 삽질하는 자의 블로그
공부이야기

2. insertOne() 은 항상 promise를 생성한다!

by 이게뭐당가 2022. 9. 20.

MVC 모델에서

class User {
    constructor(email,password,name,street,postal,country){
...
 

  async getUserWithSameEmail(){

        return db.getDb().collection("userInfo").findOne({email:this.email})

  }

 를 보고자한다.

 

비동기함수인 async getUserWithSameEmail() 은 프로미스를 통해, 값을 반환할 수 있다.

 

그래서 대부분 함수의 실행 코드 앞에 await 를 붙여, 값을 반환하는데

여기서 중요한 점은 , 데이터베이스에 접근하는 findOne은 항상 프로미스를 반환한다.

 

즉, await를 쓰지않고, (앞으로 더 쓸 코드가 없다면) retrun을 하여, 그대로 함수자체가 값을 가질 수 있게 된다.

    const data = await db.getDb().collection("userInfo").findOne({email:this.email})

     return data

라는 긴 코드 대신

    async getUserWithSameEmail(){
        return db.getDb().collection("userInfo").findOne({email:this.email})
    }

 처럼 짧고 간결한 코드로 정리가 가능한것이다.

  async hashedPassword(existUserPassword){
        return bcrypt.compare(this.password,existUserPassword)
       
    }

도 마찬가지로, 프로미스를 반환하므로 retrun을 사용하여, 바로 함수의 메서드에 의해 반환될 수 있다.

댓글