기타등등/한번해봄

👾한번 해봄 시리즈👾 mongoDB를 배워보자

킹king 2021. 5. 30. 17:19
반응형

👾한번 해봄 시리즈👾

=할건 따로있는데 한번 손대고싶어서 일단 찍어먹어보는 시리즈

 

 

------------------------------

 

 

기본 셋팅 및 활용법은 여기서

https://peamexx.tistory.com/92

 

 

-----------------------------------------

 

 

mongoDB에 데이터 넣기

 

1. 청사진 만들기

일단 user에 대한 DB를 만들어서

이메일주소, 이름, 비밀번호를 넣을 생각임.

 

이를 위해 기본 틀이 필요한데

 

schemas라는 폴더 생성 후 안에

userSchemas.js를 만들어준다.

 

 

2. userSchemas.js에 입력

const mongoose = require('mongoose');

const userSchema = mongoose.Schema({
    email: String,
    userName: String,
    password: String
});

module.exports = mongoose.model('users', userSchema);

 

 

3. server.js에 입력

const userSchema = require('./schemas/userSchemas');

mongoose.connect(process.env.DB_URL, { useNewUrlParser: true, useUnifiedTopology: true }, (err) => {
    if(err) {
        console.log(err);
    } else {
        console.log('db에 연결되었습니다.');

        const user = {
            email: 'test@email.com',
            userName: 'hobs',
            password: '1234@'
        }

        new userSchema(user).save();
    }
});

아까 만든 그 틀을 여기서 require로 불러온다음,

 

mongoDB가 성공적으로 연결되었을 때

user라는 객체 정보를 전달해서 저장해준다는 말임.

 

 

4. 사이트에서 확인

mongoDB 사이트 > 해당 클러스터 클릭 > Collections 누르면

이렇게 방금 쓴 유저값이 DB에 들어가있는것을 알 수 있음.

 

https://youtu.be/Tw60z-mvb_o?list=PLaxxQQak6D_dHXuCYHwgyHwhs225vUX6d 

 

 

-----------------------------------------

 

 

mongoDB에있는 데이터 조회하기

 

5. server.js에 입력

mongoose.connect(process.env.DB_URL, { useNewUrlParser: true, useUnifiedTopology: true }, async (err) => {
    if(err) {
        console.log(err);
    } else {
        console.log('db에 연결되었습니다.');
        
        const result = await userSchema.find({
            email: 'test@email.com',
        });
        console.log('결과', result);
    }
});

(async랑 await 쓰는거 잊지 말아야함)

이번에는 중간에 result변수를 만들어서 값을 찾고 콘솔에 찍어주도록 해보았음.

 

이렇게 나온다.

 

※ 맨처음에는 결과값이 저렇게 안나오고 무슨 Query 이래가지고 엄청 긴 내용들이 나왔는데,

혹시나 싶어서 async랑 await를 입력해보니까 제대로 나왔음.

드디어 이런곳에 쓰는구나라는걸 확실하게 느낌.

 

https://youtu.be/DKW2K_blntQ?list=PLaxxQQak6D_dHXuCYHwgyHwhs225vUX6d 

 

 

-----------------------------------------

 

 

mongoDB에있는 데이터 수정/삭제하기

 

6. server.js에 입력

mongoose.connect(process.env.DB_URL, { useNewUrlParser: true, useUnifiedTopology: true }, async (err) => {
    if(err) {
        console.log(err);
    } else {
        console.log('db에 연결되었습니다.');
        
        const result = await userSchema.update({
            userName: 'cate'
        }, {
            userName: 'marry'
        });
    }
});

이렇게 하면 이름이 cate인게 marry로 변하게 됨.

 

※ 여기서 경고가 하나 뜨는데 updateOne으로 변경해주면 된다.

만약 password가 같은 유저가 2명있는데 updateOne으로 변경하면, 제일 최신 유저만 변경된다.

둘다 바꾸고 싶다면 updateMany로 바꿔주고 하면 된다. 

 

※ 삭제는 그냥 deleteOne, deleteMany로 해주면 된다.

 

https://youtu.be/peVGxJCMGQI?list=PLaxxQQak6D_dHXuCYHwgyHwhs225vUX6d 

 

 

-----------------------------------------

 

 

mongoDB에있는 데이터 찾아서 삭제하기

 

7. server.js에 입력

mongoose.connect(process.env.DB_URL, { useNewUrlParser: true, useUnifiedTopology: true }, async (err) => {
    if(err) {
        console.log(err);
    } else {
        console.log('db에 연결되었습니다.');
        
        await userSchema.findOneAndUpdate({
            userName: 'cate'
        }, {
            email: 'test@naver.com',
            userName: 'marry',
            password: '204~!9fn2'
        }, {
            upsert: true
        });
    }
});

위에 있는 update와 무슨 차이냐고 한다면

update는 그냥 있는거에서 찾아서 데이터를 수정한다고 치면,

findOneAndUpdate는 그 기능은 맞는데, 추가로 만약에 해당하는 데이터가 없으면 두번째 파라미터 내용로 새로 하나 추가한다라는 부가적인 기능을 가지고 있음(upsert: true)

 

https://youtu.be/580jY9xmv_k?list=PLaxxQQak6D_dHXuCYHwgyHwhs225vUX6d 

 

 

-----------------------------------------

 

 

mongoDB에있는 데이터 찾아서 삭제하기

 

8. server.js에 입력