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객체는 JS에서 비동기 작업을 처리하기 위한 객체로 3가지 상태를 가진다.
그러니까 내가 콘솔로 보고있는 상태는 대기상태로 아무것도 실행되지 않은 초기 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);
}