mongoose의 exec() 함수

오젼·2023년 6월 28일
0

Mongoose에서 쿼리를 작성할 때, 쿼리 메서드(예: find(), findOne(), updateMany() 등)를 호출하면 Mongoose는 해당 쿼리를 수행하고 결과를 반환하는 대신, 이를 체인 가능한 쿼리 객체로 반환한다.

이때 exec() 함수를 사용하여 쿼리 객체를 실행하고 결과를 가져올 수 있다.

exec() 함수를 사용하여 쿼리를 실행하면 MongoDB에 해당 쿼리를 전달하고, MongoDB로부터 반환된 결과를 Mongoose의 모델 인스턴스나 JavaScript 객체의 형태로 받을 수 있다. exec() 함수는 Promise를 반환하므로, .then() 또는 async/await을 사용하여 결과를 처리할 수 있다.

router.post('/removeFromFavorite', (req, res) => {
	Favorite.findOneAndDelete({ movieId: req.body.movieId, userFrom: req.body.userFrom })
		.exec((err, doc) => {
			if (err) return res.status(400).send(err)
			return res.status(200).json({ success: true, doc })
		})
})

exec((err, 결과값) => {}) 으로 사용하는 것 같음. 첫 번째 인자는 무조건 error

const User = mongoose.model('User', userSchema);

// Mongoose 쿼리 생성
const query = User.find({ age: { $gte: 18 } }).sort({ name: 1 });

// 쿼리 실행 및 결과 처리
query.exec()
  .then(users => {
    // 결과 처리
    console.log(users);
  })
  .catch(error => {
    // 에러 처리
    console.error(error);
  });

then()과 catch()를 사용할 수도 있음

0개의 댓글