Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

꼬물꼬물 개발자

ODM 환경 설정 및 DB모델 생성 본문

카테고리 없음

ODM 환경 설정 및 DB모델 생성

한고운 2024. 1. 8. 10:45

1. 프로젝트 생성

> express mymongoapp --view=ejs

> npm i 

> npm start  (package.json / start : nodemon 변경)

 

2. Mongoose 설치

> npm i mongoose@6.10.0

> npm i mongoose-sequence@5.3.1

 

3. Database 생성

MongoDB Compass 에서 Databases 생성

 

4. Mongoose DB 연결하기

- mongosh.exe 파일 더블클릭하여 실행파일 활성화

- MongoDB Compass 에서 DB연결 주소 복사

- 주소 붙여넣기 -> test DB로 이동(default 계정으로 들어감)

- 관리자 계정 / 암호 생성

> show dbs

> use admin    

> db.createUser({ user:'아이디', pwd:'비밀번호', roles:['root']  })

 

5. Mongoose DB 환경설정

- app.js 환경구성

//몽고DB서버에 연결합니다.
const connect = require('./schemas/');
connect();

 

- indes.js 환경구성

schemas 폴더 생성 / indes.js 파일 생성

const mongoose = require('mongoose');

const connect = () => {
    if (process.env.NODE_ENV !== 'production') {
        // 현재 소스 실행환경이 개발환경인 경우 디버깅 가능하게 설정한다.
        mongoose.set('debug', true);
    }

    //몽고DB연결정보를 설정합니다.
    mongoose.connect('mongodb://아이디:비밀번호@127.0.0.1:27017/admin', {  // DB계정
        dbName: 'modu_chat',  // DB명
    }, (error) => {
        if (error) {
            console.log('몽고디비 연결 에러', error);
        } else {
            console.log('몽고디비 연결 성공');
        }
    });
};

mongoose.connection.on('error', (error) => {
    console.error('몽고디비 연결 에러', error);
});

mongoose.connection.on('disconnected', () => {
    console.error('몽고디비 연결이 끊겼습니다. 연결을 재시도합니다.');
    connect();
});


//회원정보 콜렉션 모델을 참조합니다.
//require('./member.js');

//게시글 ODM모델 추가
require('./article.js');


module.exports = connect;

 

- npm start 실행 순서

app.js 실행 -> schemas/ index.js 호출 -> mongoose 패키지 참조 ->  mongoose.connect 매서드 호출

 

7. Mongoose 모델 생성

- schemas/ article.js


// mongoose 패키지를 참조한다.
const mongoose = require('mongoose');

// 숫자 자동채번 기능제공을 윟한 mongoose-sequence 패키지 설치하고 참조하기
// 설치 : npm i mongoose-sequence@5.3.1
// mongoose-sequence
const AutoIncrement = require("mongoose-sequence")(mongoose);
const { Schema } = mongoose;

// Schema클래스를 생성할때 생성자함수에 새로만들 콜렉션의 스키마(데이터구조)를 정의합니다.
const articleSchema = new Schema({
    title: {
        type: String,
        required: true,
    },
    article_type_code: {
        type: Number,
        required: true,
    },
    contents: {
        type: String,
        required: false,
    },
    view_count: {
        type: Number,
        required: true,
    },
    is_display_code: {
        type: Number,
        required: true,
    },
    ip_address: {
        type: String,
        required: false,
    },
    edit_date: {
        type: Date,
        default: Date.now,
    },
    edit_member_id: {
        type: Number,
        required: false,
    },
});

//자동채번 컬럼생성 및 콜렉션에 추가
articleSchema.plugin(AutoIncrement, { inc_field: "article_id" }); //article_id는 1,2,3,4..

// mongoose.model('콜랙션', )호출해서 물리적인 콜랙션(테이블)을 생성해줍니다.
module.exports = mongoose.model('Article', articleSchema);

 

index.js

//게시글 ODM모델 추가
require('./article.js');

 

- schemas/ member.js 생성

const mongoose = require('mongoose');
const { Schema } = mongoose;

const memberSchema = new Schema({
    memberid: {
        type: String,
        required: true,
        unique: true,
    },
    memberpwd: {
        type: String,
        required: true,
    },
    membername: {
        type: String,
        required: true,
    },
    email: {
        type: String,
        required: true,
    },
    age: {
        type: Number,
        required: false,
    },
    married: {
        type: Boolean,
        required: false,
    },
    createdAt: {
        type: Date,
        default: Date.now,
    },
});

module.exports = mongoose.model('Member', memberSchema);

 

index.js

//회원정보 콜렉션 모델을 참조합니다.
require('./member.js');

 

index.js 작성 완료

 

8. 라우터 파일에서 모델 사용하기