Database/ODM
[Node.js / mongoose] mongoDB에 저장을 해보자
choice91
2021. 9. 20. 16:36
728x90
반응형
데이터를 저장하는 방법에는 두 가지 방법이 있다.
- save()
- 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
반응형