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 |