데이터베이스 : 여러 사람이 공유하여 사용할 목적으로 체계화해서 통합, 관리하는 데이터의 집합
-관계형 데이터베이스 : 자료의 구조를 행과 열로 구분해서 표 형태로 관리, SQL 데이터베이스라고도 함
-NoSQL 데이터베이스 : SQL을 사용하지 않고, 자료를 문서 형태로 저장하는 JSON 형식 데이터베이스
몽고DB : NoSQL 데이터베이스
-도큐먼트 : 자료를 저장한 문서, 컬렉션들의 집합
-아틀라스 : 클라우드에 몽고DB를 올려놓고 사용하는 서비스
-클러스터 : 여러 데이터베이스 서버를 연결해 놓은 서버 그룹
MongoDB for VS Code : Visual Code Studio에서 몽고DB를 사용할 수 있는 확장
몽구스 : MongoDB를 Node.js로 사용할 수 있도록 하는 확장 모듈
dotenv : .env 파일을 사용하기 위한 모듈
-.env : 외부에 드러내고 싶지 않은 환경 변수를 저장하는 파일
-환경 변수 : 데이터베이스나 비밀번호처럼 애플리케이션마다 달라지는 정보를 가리킴
//몽구스, dotenv 설치
>> npm install mongoose dotenv
<.env> : .env 파일 작성
DB_CONNECT = mongodb+srv://<username>:<password>@cluster0.oimz7n5.mongodb.net/myContact
//커넥션 스트링(데이터베이스)를 변수에 지정
<app.js>, config - <dbConnect.js> : 몽고DB를 비동기 처리로 연결
※.config() : 파일을 인식하여 구성하는 함수
※mongoose.connect(URL[, 옵션]) : 데이터베이스, 커넥션 스트링에 연결
※process.env : 사용자 환경이 담긴 .env 파일에 환경 변수를 가져옴
//dbConnect.js
const mongoose = require("mongoose"); //몽구스 불러오기
require("dotenv").config(); //dotenv 물러오기
const dbConnect = async () => { //몽고DB 연결 함수
try {
const connect = await mongoose.connect(process.env.DB_CONNECT); //커넥션 스트링 환경 변수 가져오기
console.log("DB Connect");
} catch (err) {
console.log(err);
}
};
module.exports = dbConnect;
//app.js
const express = require("express");
const dbConnect = require("./config/dbConnect"); //dbConnet.js 파일 연결
const app = express();
dbConnect(); //dbConnet 실행
app.get("/", (req, res) => {
res.status(200).send("Hello Node");
});
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use("/contact", require("./routes/contactRoutes"));
app.listen(3000, () => {
console.log("3000 포트에서 서버 실행 중");
});
스키마 : 애플리케이션에서 사용할 자료의 형태를 지정하는 것
models - <contactSchema.js> : 연락처 스키마 만들기
※mongoose.Schema(스키마, [옵션]) : 스키마를 생성
-type : 속성 유형
-required : 필수 속성 여부
-timestamps : 자료를 추가하거나 변경한 시간 기록
-unipue : 중복 여부 지정
※mongoose.model(모델명, 스키마) : 자료를 조회, 수정, 삭제 등의 작업을 할 수 있도록 모델로 변환
-스키마를 사용하려면 모델로 변환해서 사용해야 함
-모델 이름은 대문자 단수형(Contact), 연결된 컬렉션은 소문자 복수형(contacts)
const mongoose = require("mongoose"); //몽구스 불러오기
const contactSchema = new mongoose.Schema( //스키마 생성
{
name: {
type: String, //속성 유형
required: true, //필수 속성인지 여부
},
email: {
type: String,
},
phone: {
type: Number,
required: [true, "전화번호는 꼭 기입해주세요."], //오류 메시지도 함께 지정
},
},
{
timestamps: true, //자료를 추가하거나 수정한 시간이 자동으로 기록
}
);
module.exports = mongoose.model("Contact", contactSchema); //스키마를 모델로 만들어서 외부로 모듈을 내보냄
'Do it Node.js > EJS BackEnd' 카테고리의 다른 글
14. CRUD (0) | 2024.03.12 |
---|---|
13. RESTful API (0) | 2024.03.11 |
11. 미들웨어 (0) | 2024.03.06 |
10. Express (0) | 2024.03.03 |
9. Node 비동기 처리 (0) | 2024.03.01 |