-
[2019.05.11] Express환경에서 mongoDB 사용하기개발 블로깅/Server&DataBase 개념 2019. 5. 11. 09:55
# mongoDB 개념 및 설치, 실행방법
mongoDB의 개념과 설치, 실행 방법은 이전에 블로깅 한 내용이 있어서 링크로 대체!
https://helloinyong.tistory.com/42
# express에서 MongoDB 사용법
express 안에서 mongoDB를 사용하기 위해서는 mongoose 모듈을 설치해야 한다.
npm i -D mongoose
node에서 mongoDB를 연동하려면, mongoDB 서버가 실행되고 있어야 한다.
mongoDB가 설치되어 있다면, 터미널에서 mongoDB 서버를 실행시킨다.
$ mongod
이제 node 서버에서 mongoDB를 접속해보자. node 안에서 mongoDB를 접속하는 방법은 아래와 같다.
const mongoose = require('mongoose'); mongoose.connect(/* mongoDB서버 URL */); const db = mongoose.connection; db.on('error', console.error); // mongoDB 연동 실패 시 에러 메시지 출력 db.once('open', () =>{ console.log('connected to mongoDB server'); // mongoDB 연동 성공 시 메시지 출력 });
* mongoDB 서버의 URL 확인하는 방법
$ mongo // mongod 명령어로 서버 실행시킨 상태에서, 다른 터미널로 해당 명령어 실행
위처럼 DB 서버의 URL을 확인할 수 있다.
# mongoDB 스키마 생성
const mongoose = require('mongoose'); const Schema = mongoose.Schema; /* 스키마 생성 */ const User = new Schema({ username: String, password: String, admin: {type: Boolean, default: false} }); /* 해당 스키마에 데이터 추가 */ User.statics.create = function(username, password){ const user = new this({ username, password }); return user.save(); }; /* 해당 스키마의 데이터 조회 */ User.statics.findOne = function(username){ return this.findOne({ username }).exec(); } module.exports = mongoose.model('User', User);
위와 같이, 스키마를 구조에 맞게 생성하고, 해당 스키마에 추가, 조회 등
# 스키마 사용
스키마에서 실행된 반환 값은 전부 Promise이므로 then을 꼭 써줘야 한다.
조회하기
const User = require('./user'); // 스키마를 받아옴 User.find({}) .then( users=>{ console.log(users); // 모든 유저 정보 출력 }); User.findOne({name:'inyong'}) .then(user=>{ console.log(user); // 해당 유저 정보 출력 });
수정하기
Users.findOneAndUpdate({name:'inyong'},{name:'inyong2'}, {multi: true, new: true})
- 첫 번째 매개변수 : 찾을 정보
- 두 번째 매개변수 : 변경 내용
- 세 번째 매개변수 : 옵션 (multi : 해당 정보 모두 변경 여부, new: 업데이터 변경사항 반환 여부)
삭제하기
User.findOneAndRemove({name:'inyong'})
스키마에 등록한 메서드 사용하기
User.create('inyong', '1234') .then(user=>{ console.log(user); // 저장된 유저 정보 출력 });
스키마에 등록한 메서드는, 스키마 생성 후에 statics로 적용했던 메서드이다.
express와 mongoDB를 연동해서 사용하는 법을 대략적으로만 작성해봤다.
제로초님께 감사! https://www.zerocho.com/category/MongoDB/post/59a1870210b942001853e250
몽고 DB는 이머시브 개강 전에 잠깐 다뤄봤었는데, 이렇게 솔로 위크 때 다시 사용을 해 볼 수 있는 기회를 가진 것 같아 너무 좋다.
그런데 아직 몽고 디비를 어떤 방식으로 써야 잘 사용하는 건지를 잘 모르겠다...
그냥 mysql 대체용으로 사용할 수 있는 것일까... 2주 차 프로젝트 때 써먹어볼까...
반응형'개발 블로깅 > Server&DataBase 개념' 카테고리의 다른 글
[2019.06.22] Serverless란? (0) 2019.06.22 [2019.06.10] Serverless framework를 이용하여 lambda 배포하는 법 (0) 2019.06.11 [2019.05.06] 코드에 DB 쿼리문은 그만! 유용한 Sequlize (0) 2019.05.06 [2019.05.02] AWS - EC2란? (0) 2019.05.02 [2019.05.01] Local Storage와 Session Storage (1) 2019.05.01