공부이야기
2. insertOne() 은 항상 promise를 생성한다!
이게뭐당가
2022. 9. 20. 12:55
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을 사용하여, 바로 함수의 메서드에 의해 반환될 수 있다.