웹 서버를 운영하려면 데이터베이스가 필요하다.
물론 단순한 웹페이지 같은 경우는 예외겠지만
로그인 같은 기본적인 기능만 넣으려 해도
필수적으로 있어야 하는 것이 데이터베이스다.
MongoDB는 유명한 데이터베이스로 Mongoose와 같이 사용하면
자바스크립트로 많은 기능을 다룰 수 있다.
오늘은 Mongoose와 MongoDB의 기본 사용법에 대해 다뤄보았다.
1. MongoDB 서버에 연결하기
2. 모델 생성하기
3. MongoDB 터미널에서 직접 데이터 다루기
MongoDB 서버에 연결하기
먼저 MongoDB가 서버에 연결되어 있어야
서버에서 데이터베이스에 값을 넣고 빼올 수가 있다.
// database.js
import mongoose from "mongoose";
mongoose.connect("mongodb://127.0.0.1:27017/project", {
useNewUrlParser: true,
useUnifiedTopology: true,
});
따로 database.js 라는 파일을 만들었다.
mongodb://127.0.0.1:27017/project
connect 메서드의 인자로 위의 내용을 입력해야 하는데
MongoDb를 실행했을 때 나오는 id와
만들고 싶은 데이터베이스의 이름(project)을 입력해야 한다.

그대로 실행하면 콘솔 창에 경고가 나오는데
두 번째 인자를 입력해서 경고를 없앨 수 있다.
그리고 서버를 돌리는 파일에서 위의 파일명을 업로드하면 데이터베이스가 생성되다.
import "./db";
모델 생성하기
Mongoose에서는 데이터를 저장할 형식을 지정할 수 있다.
이것을 스키마라고 하는데 사용자가 데이터를 입력하면
값을 데이터베이스에 넣기 전에 검사해서 지정한 형식이 아니면 에러를 발생시킨다.
사람의 프로필을 생성하는 모델이다.
import mongoose from "mongoose";
const personSchema = new mongoose.Schema({
name: { type: String, required: true },
age: { type: Number, default: 20 },
height: Number,
weight: Number,
});
new 키워드로 스키마를 생성해서 변수에 넣어준다.
지정할 형식이 두 개 이상이면 중괄호를 사용하고
하나만 있으면 생략해도 된다.
required: true 는 사용자가 필수로 입력하도록 설정하는 것이다.
default 는 사용자가 입력하지 않았을 때 기본값을 지정한다.
이렇게 정의된 스키마는 모델로 등록해서 사용할 수 있다.
const Person = mongoose.model("Person", personSchema);
mongoose.model 메서드의 첫 번째 인자는 MongoDB에 들어갈 이름,
두 번째는 지정한 스키마 변수 이름이다.
이제 Person 변수로 데이터를 만들 수 있다.
Person.create({
name: "James",
age: 20,
height: 180,
weight: 80,
});
create 메서드로 간단하게 데이터를 생성할 수 있다.
물론 보통은 직접 입력하는 것보다 사용자에게 입력받은 데이터를 사용한다.
MongoDB 터미널에서 직접 데이터 다루기
위에서 생성한 데이터를 MongoDB 터미널에서 직접 다루는 것도 가능하다.
터미널에서 MongoDB를 실행하면 이상한 문자가 쫙 뜨면서 > 모양의 화살표가 나온다.
그 화살표 옆에 명령어를 입력하면 된다.

만약 명령어에 대해서 모르거나 기억이 안 나면
help 명령어를 입력하면 기본 명령어와 설명이 나온다.
먼저 show dbs를 입력하면 데이터베이스 목록이 나온다.
나 같은 경우는 위에서 입력한 project 가 나왔다.
데이터베이스 안으로 들어가려면 use(데이터베이스명)을 입력한다.
나는 use project 를 입력했다.
switched to db project 라는 문구가 뜨면 정상적으로 실행된 것이다.
아까 생성한 Person 모델을 보려면 show collections 를 입력하면 된다.
여기서 특이한 점이 있는데 우리가 지은 모델명과는 다른 걸 볼 수 있다.
이유는 모르겠지만 MongoDB는 모델명을 소문자 그리고 복수형으로 알아서 변경한다.
아까 생성한 Person은 people로 변경되어 있었다.
db.(모델명).find() 를 입력하면 모델 안의 데이터가 출력된다.
ex) db.people.find()
만약 모델 안에 많은 데이터가 들어있고 그중에 삭제하고 싶은 것이 있다면
db.(모델명).remove({}) 를 사용할 수 있다.
엔터를 치면 WriteResult({ "nRemoved" : 1 }) 라는 문구가 뜨는데
지운 데이터의 개수를 의미한다.
중괄호 안에는 속성을 입력해서 원하는 데이터를 삭제할 수 있다.
ex) db.people.remove({name:"James"})
만약 아무것도 입력하지 않으면 모두 삭제된다.
remove를 사용하면 데이터는 삭제되지만 모델 자체는 삭제되지 않는다.
db.(모델명).drop()을 입력하면 true를 반환하면서 모델이 삭제된다.
ex) db.people.drop()
'Programming > Node.js' 카테고리의 다른 글
| [Node.js] dotenv(.env)로 환경변수 만들기 (0) | 2021.10.26 |
|---|---|
| [Node.js] bcrypt로 패스워드 암호화하기 (0) | 2021.10.26 |
| [Node.js] Mongoose 설치하기 (0) | 2021.10.20 |
| [Node.js] Pug - mixin을 활용한 파일 정리 (0) | 2021.10.20 |
| [Node.js] Pug - partial (복붙 최소화하기) (0) | 2021.10.20 |