1. Mongoose ?
Node.js 비동기 환경에서 동작하도록 디자인 된 몽고DB 모델링 툴이다. Mongoose는 promise와 callback 모두 지원한다.
2. 설치
$ npm install mongoose --save
3. 불러오기(importing)
// Using Node.js `require()`
const mongoose = require('mongoose');
// Using ES6 imports
import mongoose from 'mongoose';
4. 몽고DB 연결
만약 하나의 DB만 사용한다면, mongoose.connect()를 사용하고, 만약 추가적인 연결들이 필요할 경우에 mongoose.createConnection()을 사용한다. 두 가지 경우 모두 mongodb://URI 또는 host, database, port, options 같은 파라미터를 받습니다.
// npm공식 문서 사용 예시
mongoose.connect('mongodb://localhost/my_database', {
useNewUrlParser: true,
useUnifiedTopology: true,
useFindAndModify: false,
useCreateIndex: true
});
// 사용 예시
// config.mongoURI --> 몽고DB url을 외부 모듈(config라는 명)로 만들어 불러서 사용한 경우
mongoose.connect(config.mongoURI, {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
useFindAndModify: false
})
.then(() => console.log('MongoDB Conneted...'))
.catch(err => console.log(err));
여기서 몽고 DB 가 Local 일 경우 주소만 해당되지만 클라우드를 통해서 올 때는 비밀번호까지 들어가기 때문에 조심해야 한다.
5. 스키마 정의 & 모델화
var mySchema = mongoose.Schema({
name : 'string',
address : 'string',
age : 'number'
});
// mongoose.model('ModelName', mySchema)
const MyModel = mongoose.model('ModelName');
정의된 스키마를 객체처럼 사용할 수 있도록 model() 함수로 컴파일한다.
6. 모델 객체 생성 후 데이터 입력
const newInfo = new MyModel({name:'Hong Gil Dong', address:'서울시 강남구', age:'26'});
new를 이용해 모델 객체를 생성해 데이터를 입력해준다.
7. 데이터 저장
newInfo.save(function(error, data){
if(error){
console.log(error);
}else{
console.log('Saved!')
}
});
-
Model.save(function(err,product)); : Callback
-
Model.save().then(resolved,rejected); : Promise
8. 데이터 가져오기
// find(): 전체 데이터 불러오기, findOne() : 데이터 하나 가져오기
MyModel.find({}, function (err, docs) {
// docs.forEach
});
// 예제
newInfo.find(function(error, students){
console.log('--- Read all ---');
if(error){
console.log(error);
}else{
console.log(students);
}
})
9. 데이터 수정하기
// 특정 id에 해당하는 데이터 수정
MyModel.findOne({_id:'585b777f7e2315063457e4ac'}, function(error,student){
if(error){
console.log(error);
}else{
student.name = '김철수';
student.save(function(error,modified_student){
if(error){
console.log(error);
}else{
console.log(modified_student);
}
});
}
});
// update() 이용방법도 있다.
10. 데이터 삭제하기
MyModel.findOne({title:'아바타'}, function(err, doc) {
if ( doc ) {
doc.name = '홍길동';
doc.remove(function(err, product) {
console.log('Find and Remove : ', err, product);
});
}
});
// remove()함수 이용
MyModel.remove({job:'학생'}).then(resolved, rejected);
반응형
'Node.js' 카테고리의 다른 글
[Node.js] http-proxy-middleware 모듈 (0) | 2020.11.10 |
---|---|
[Node.js] Express.js 란 무엇인가? (0) | 2020.11.02 |
[Node.js] JWT를 이용한 사용자 인증 (jsonwebtoken 모듈) (0) | 2020.08.28 |
[Node.js] package.json 파일은 무엇인가? (0) | 2020.08.02 |