Mongoose) CRUD

알파로그·2023년 12월 14일
0

Node.js

목록 보기
25/25

✏️ Setting

  • 스키마와 모델을 생성해 export 한 모듈을 import 해서 사용하는 것이 편리하다.
const Vacation = require('../../models/vacation')

✏️ 저장

📍 객체 생성

  • java 의 객체 생성과 흡사하다.
const vacation = new Vacation({
        name: 'Hood River Day Trip',
        slug: 'hood-river-day-trip',
        ...
    })

📍 data 저장

  • 생성한 객체에서 save 함수를 호출해면 된다.
vacation.save()
    .then(save => console.log('save 성공 :', save))
    .catch(err => throw new Error(err))

✏️ 조회

📍 모든 문서 조회

  • exec() 를 사용하면 프로미스 객체를 반환해준다.
    • Spring WebFlux 의 Operation Chain 과 비슷한 개념으로,
      체인 가능한 쿼리 객체를 의미한다.
    • 만약 find() 까지만 호출할 경우 쿼리 객체만 반환하게 된다.
Vacation.find()
    .then(vacation => console.log('All vacations :' vacation)
    ).catch(err => console.error('Error :',  err)

📍 특정 문서 조회

Vacation.findOne({ name: 'jeju' })
    .then(vacation => console.log('vacation :', vacation)
    .catch(err => console.error('Error :', err)

✏️ 업데이트

  • mongoDB 에서는 updateOne() 을 사용해 조회와 최신화를 동시에 진행할 수 있다.
  • updateOne(filter, update, option)
    • filter : 특정 도큐먼트를 조회하는 인자
    • update : 조회한 도큐먼트의 필드값을 업데이트하는 인자
      • $push 는 필드가 배열 형식일 때 기존 배열에 새로운 값을 추가하는 기능이다.
    • option : 업데이트 종작을 조절하는 인자 (upsert 를 사용할 수 있음)
      • 대표적으로 { upsert: true } 는 filter 에 해당하는 문서가 있으면 update 하고,
        없다면 문서를 새로 생성하는 기능이다.
addVacationInSeasonListener: async (email, sku) => {
    await VacationInSeasonListener.updateOne(
        { email },
        { $push: { skus: sku } },
        { upsert: true }
    )
}

✏️ 삭제

  • 삭제도 update 와 비슷한 방법으로 할 수 있다.
  • deleteOne(filter) : 특정 문서 하나만 삭제
  • deleteMany(filter) : 복수의 특정 문서 삭제
profile
잘못된 내용 PR 환영

0개의 댓글