Nodejs - 버전4

이율곡·2023년 3월 6일
0

Node js

목록 보기
23/26
post-thumbnail

Mongoose

이번에는 Mongoose 라이브러리를 활용해서 쇼핑몰 환경을 구축했다.

https://github.com/leeyulgok/NodejsPracticeVersion4.git

MongoDB와 Mongoose 라이브러리는 정말 공부하고 싶었는데 이번 기회를 통해 기초를 확실하게 공부했다. 공부를 하면서 느낀 부분은 편하다라는 점이다. 확실히 라이브러리를 사용하여 코딩을 하게 되면 개발자에게 많은 편의성을 제공해준다는 것을 알았다. 특히나 스키마를 만드는 부분에 있어서 Mongoose가 많은 이점을 주었다.

기억에 남는 부분

populate() 메서드

Mongoose에서는 populate()라는 메서드가 가장 효율적이라 생각했다.

populate(): 다른 컬렉션의 값을 현재 컬렉션에 쉽게 가져올 수 있게 해준다. Mongoose에서는 관계를 설정할 때 ObjectId를 사용하기에 이 ObjectId를 사용하여 컬렉션과 관계를 가진 다른 컬렉션의 값도 함께 가져올 때 쓴다.

예시

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const authorSchema = new Schema({
  name: {
    type: String,
    required: true
  },
  age: {
    type: Number
  }
});

const bookSchema = new Schema({
  title: {
    type: String,
    required: true
  },
  author: {
    type: Schema.Types.ObjectId,
    ref: 'Author'
  }
});

const Author = mongoose.model('Author', authorSchema);
const Book = mongoose.model('Book', bookSchema);

const book = new Book({
  title: 'Example Book',
  author: 'AuthorObjectId'
});

Book.find().populate('author').exec(function(err, books) {
  console.log(books);
});

예시를 설명하면, 우선 책과 작가 스키마를 만들었다. 책 스키마는 작가를 참고하고 있고, 작가 필드는 작가 스키마의 _id를 참조한다.

다음은 책 인스턴스를 만들고 작가 필드에서는 작가 스키마의 _id를 참조한다. 마지막으로 populate() 메서드의 인자로 author 필드 이름이 전달되고 exec() 메서드를 실행하면 Book 모델의 모든 데이터와 해당 author 데이터가 반환된다.

정리하기

이번에는 Mongoose 라이브러리를 활용하여 쇼핑몰을 구축했다. 왜 라이브러리를 잘 사용해야 되는지 알았다. 또한 populate() 메서드를 잘 활용하면 어렵지 않게 데이터를 가져올 수 있다는 것을 배웠다. 차근차근히 잘 이해하며 나아가고 싶다.

profile
음악을 좋아하는 사람이 음악을 만들 듯, 개발을 좋아하게 될 사람이 쓰는 개발이야기

0개의 댓글