만능재주꾼

[Node.js 교과서] 8장 몽고디비 정리하기 본문

💻 Node.js

[Node.js 교과서] 8장 몽고디비 정리하기

유고랭 2021. 3. 16. 04:00

8장의 모든 코드를 쓰기엔 많으니 8장 중심 코드만 가져오겠음!!

내가 생각하기에 8장에서 중요한 코드는 schemas폴더에 있는 index.js & comment.js & users.js이다.

왜냐면 데이터베이스 연결한 모습을 보여주는 예제기 때문😎


🗂schemas

  👉🏻index.js

const mongoose = require('mongoose');

const connect = ()=>{ 
    /* 개발 환경일 때 콘솔을 통해 몽구스가 생성하는 쿼리 내용을 확인할 수 있게 하는 코드 */
    if (process.env.NODE_ENV !== 'production'){
        mongoose.set('debug',true);
    }
    
    /* 몽구스와 몽고디비 연결하는 부분 */
    mongoose.connect('mongodb://사용자이름:비밀번호@localhost:27017/admin',{
        dbName: 'nodejs',
        useNewUrlParser: true,
        useCreateIndex: true,
    },(error)=>{
        if (error){
            console.log('몽고디비 연결 에러',error);
        } else {
            console.log('몽고디비 연결 성공');
        }
    });
};

/* 몽구스 커넥션에 이벤트 리스너 달기 */
mongoose.connection.on('error',(error)=>{
    console.error('몽고디비 연결 에러',error);
});
mongoose.connection.on('disconnected',()=>{
    console.error('몽고디비 연결이 끊겼습니다. 연결을 재시도합니다.');
    connect();
});
module.exports = connect;

 >> 몽고디비를 연결하고 연결이 올바르게 됐는지 확인하는 코드 <<

 


  👉🏻users.js

const mongoose = require('mongoose');

const { Schema } = mongoose;
const userSchema = new Schema({
    name: {
        type: String,
        required: true,
        unique: true,
    },
    age:{
        type: Number,
        required: true,
    },
    married:{
        type: Boolean,
        required: true,
    },
    comment: String,
    createAt: {
        type:Date,
        default: Date.now,
    },
});
module.exports = mongoose.model('User',userSchema);

>> user 컬렉션 안에 name, age, married, comment, comment, createAt 데이터를 받을 수 있음 <<


  👉🏻comment.js

const mongoose = require('mongoose');

const { Schema } = mongoose;
const { Types:{ ObjectId }} = Schema;
const commentSchema = new Schema({
    commenter:{
        type: ObjectId,
        required: true,
        ref: 'User',    //commenter 필드에 User 스키마의 사용자 ObjectId가 들어감
    },
    comment:{
        type: String,
        required: true,
    },
    createAt:{
        type: Date,
        default: Date.now,
    },
});
module.exports = mongoose.model('Comment',commentSchema);

>>comment 컬렉션 안에 commenter, comment, createAt 데이터를 받을 수 있음 <<


완성된 몽구스 서버를 연결해보니까 책에 나온 것처럼 댓글이 표로 안나와서 당황스러웠지만 해결하려고 노력해봤다.

어찌저찌하니까 책에 나온 그림처럼 출력이 되긴 하는데 수정 버튼이랑 삭제 버튼 구현을 하지 못했다.

예제 코드를 보니까 댓글 로딩하는 걸 구현해놓은 것 같은데 실행이 안돼,,, 이건 더 생각해봐야겠다

일단 내가 html로 추가한 코드를 첨부해야지~

<table id="comment-list">
  <thead>
  <tr>
    <th>아이디</th>
    <th>작성자</th>
    <th>댓글</th>
    <th>수정</th>
    <th>삭제</th>
  </tr>
  </thead>
  <tbody>
  {% for user in users %}
  <tr>
    <td>{{user.id}}</td>
    <td>{{user.name}}</td>
    <td>{{user.comment}}</td>
    <td><button type="update">수정</button></td>
    <td><button type="delete">삭제</button></td>
  </tr>
  {% endfor %}
  </tbody>
</table>

 

 

 

 


✏️끄적끄적

몽고디비 너무 번거롭다

sql은 따로 데이터베이스 생성안해도 알아서 척척 실행하던데 몽고디비는 내가 데이터베이스를 만들어줘야 된다

몽고디비 이름이 귀여워서 마음에 들었는데....🙊 

 

 

 

 

 

Comments