본문 바로가기

Node.js

13. CRUD

CRUD 

 

1. CREATE 

 

const { post } = require('./models');

async function main() {
  const created = await Post.create({
    title: 'first title',
    content: 'second title',
  });

  const multipleCreated = await Post.create([
    item1,
    itme2,
  ]);
}

 

  • create 함수를 사용하여 Document 생성 
  • create 함수에는

       1) Document Object -> 단일 Document 생성 

       2) Document Object의 Array -> 복수 Document 생성 

  • create는 생성된 Document를 반환해 줌 

 

2. FIND ( READ )

 

const { post } = require('./models');

async function main() {
  const listPost = await Post.find(query);
  const onePost = await Post.findOne(query);
  const postById = await Post.findById(id);
}

 

  • find 관련 함수를 사용하여 Document를 검색
  • query를 사용하여 검색하거나 findById 를 사용하면 ObjectID로 Document를 검색할 수 있음.

 

3. UPDATE 

 

const { post } = require('./models');

async function main() {
  const updateResult = await Post.updateOne(query, { ... });
  const updateResults = await Post.updateMany(query, { ... });
}

 

  • update 관련 함수를 사용하여 Document 를 수정 
  • find~ 함수들은 검색된 Document를 업데이트를 반영하여 반환해줌
  • mongoose의 update는 기본적으로 $set operator 를 사용하여, Document를 통째로 반영하지 않음.

 

4. DELETE 

 

const { post } = require('./models');

async function main() {
  const deleteResult = await Post.deleteOne(query);
  const updateResults = await Post.updateMany(query);
}

 

  • delete 관렴 함수를 사용하여 Document 삭제
  • find~ 함수들은 검색된 Document를 반환해줌

 

5. Populate 

 

const Post = new Schema({
  user: {
    type: Schema.Types.ObjectId,
    ref: 'User'
  },
  comments: [{
    type: Schema.Types.ObjectId,
    ref: 'Comment'
  }],
});

const post = await Post.find().populate(['user', 'comments']);

// post.user.name, post.comments[0].content ...etc

 

  • Document 안에 Document를 담지 않고, ObjectID를 가지고 reference 하여 사용할 수 있는 방법을 제공.
  • Document 에는 reference 되는 ObjectID를 담고, 사용할 때 populate 하여 하위 Document 처럼 사용할 수 있게 해줌.

'Node.js' 카테고리의 다른 글

15. body-parser  (0) 2022.03.11
14. CORS  (0) 2022.03.11
12. MongoDB  (0) 2022.03.07
11. req.params 과 req.body  (0) 2022.02.27
10. 구조 분해 할당 ( Destructiong assignment)  (0) 2022.02.27