기억 휘발 방지소

[Node.js / mongoose] mongoDB에 저장을 해보자 본문

Database/ODM

[Node.js / mongoose] mongoDB에 저장을 해보자

choice91 2021. 9. 20. 16:36
728x90
반응형

데이터를 저장하는 방법에는 두 가지 방법이 있다.

  1. save()
  2. create()

 

📌 Document.save()

먼저 자바스크립트 객체를 만들어줘야한다.

// Post.js
import mongoose from "mongoose";

const postSchema = new mongoose.Schema({
  title: String,
  description: String,
  createdAt: Date,
  hashtags: [{ type: String }],
  meta: {
    views: Number,
    rating: Number,
  },
});

const Post = mongoose.model("Post", postSchema);

export default Post;
// postController.js
import Post from "../models/JPost";
...
export const upload = async (req, res) => {
  const { title, description } = req.body;
  const post = new Post({
    title: title,
    description: description,
    createdAt: Date.now(),
    hashtags: hashtags.split(",").map((word) => `#${word}`),
    meta: {
      views: 0,
      rating: 0,
    },
  });
  await post.save();
  return res.redirect("/");
};
...

브라우저에서 입력받은 값들을 post라는 객체로 만들어준다.

post.save()를 해주면 몽고DB에 저장이된다.

save는 Promise를 반환하기 때문에 callback이나 async/await로 처리할 수 있다.

post를 콘솔에 출력해보면 mongoose가 자동적으로 _id도 부여해주는 것을 볼 수 있다.

  {
    meta: { views: 0, rating: 0 },
    _id: new ObjectId("61482cd803b6b7052d077045"),
    title: 'go to DB',
    description: 'hello',
    createdAt: 2021-09-20T06:40:24.473Z,
    __v: 0
  }

 

📌 Document.create()

save를 쓸 때에는 먼저 자바스크립트 객체를 만들어줬어야했는데 create를 사용하면 생략해줄 수 있다.

...
await Post.create({
  title: title,
  description: description,
  createdAt: Date.now(),
  meta: {
    views: 0,
    rating: 0,
  },
});
...

 

📌 DB에 잘 저장되어 있는지 확인해보자

Robo 3T로 확인했을 때 입력한 값들이 정상적으로 DB에 저장되었다!

728x90
반응형