MongoDB 출력 Data <pending> 상태

챔수·2023년 11월 30일
0

개발 공부

목록 보기
96/101
export default async function handler(...[req, res]: serverPropsType) {
  const { name, email, password } = req.body;
  const db = (await connectDB).db("forum");
  const emailFilter = db.collection("user_cred").findOne({ email: email });

  console.log(emailFilter);
}

mongoDB에서 위와같은 데이터가 있는지 확인해보려고 콘솔에서 확인해봤다. 하지만 <pending> 상태가 계속 출력 되었다.

  Promise {
  <pending>,
  [Symbol(async_id_symbol)]: 261720,
  [Symbol(trigger_async_id_symbol)]: 261716,
  [Symbol(kResourceStore)]: undefined,
  [Symbol(kResourceStore)]: undefined,
  [Symbol(kResourceStore)]: undefined,
  [Symbol(kResourceStore)]: undefined,
  [Symbol(kResourceStore)]: undefined,
  [Symbol(kResourceStore)]: undefined,
  [Symbol(kResourceStore)]: undefined,
  [Symbol(kResourceStore)]: undefined,
  [Symbol(kResourceStore)]: undefined
}

Promise의 3가지 상태

Promise객체는 JS에서 비동기 작업을 처리하기 위한 객체로 3가지 상태를 가진다.

  • 대기(pending) : 이행하거나 거부되지 않은 초기상태.
  • 이행(fulfilled) : 연산이 성공적으로 완료됨.
  • 거부(rejected) : 연산이 실패함.

그러니까 내가 콘솔로 보고있는 상태는 대기상태로 아무것도 실행되지 않은 초기 Promise상태라는 것이다.

console.log(emailFilter) 을 실행한 시점에서는 아직 findOne()작업이 완료되지 않았고 Promise가 <panding>상태를 가지고 있는 것이다.

결과값을 얻으려면 await키워드를 사용해줘야 한다.

export default async function handler(...[req, res]: serverPropsType) {
  const { name, email, password } = req.body;
  const db = (await connectDB).db("forum");
  const emailFilter = await db.collection("user_cred").findOne({ email: email });

  console.log(emailFilter);
}
profile
프론트앤드 공부중인 챔수입니다.

0개의 댓글