Mongoose
Mongoose는 Node.js에서 MongoDB를 더 편하게 다룰 수 있게 도와주는 라이브러리이다. 반환타입은 Promise로 반환한다.
간단한 예시 (스키마 정의)
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const userSchema = new Schema {
name: {
type: String,
required: true
},
email: {
type: String,
required: true,
unique: true
}
};
const User = mongoose.model('User', userSchema);
module.exports = User;
위의 코드는 Mongoose 라이브러리를 사용하여 유저 스키마를 만들고 유저 모델을 보내는 코드이다. 이전 MongoDB 보다 조금은 쉽게 스키마를 정의할 수 있다.
CRUD 사용하기
Create
const User = require('./models/user');
const user = new User({
name: 'yulgok';
email: 'yulgok@test.com'
});
user.save((err, savedUser) => {
if (err) {
console.log(err);
} else {
console.log(savedUser);
}
});
위의 코드는 user 인스턴스를 생성하고 save() 메서드로 저장하는 예시이다. save() 메서드에서는 콜백함수로 에러와 결과를 확인했다.
Read
User.findOne({ email: 'yulgok@test.com' }, (err, user) => {
if (err) {
console.log(err);
} else {
console.log(user);
}
});
위의 코드는 조건을 지정하고 조건에 맞는 하나의 문서를 가져오는 예시이다. findOne() 메서드를 사용했다. 만약 조건에 맞는 문서가 여러 개일 경우에도 하나만 가져온다.
Update
User.updateOne(
{ email: 'yulgok@test.com' },
{ name: 'yulgok1' },
(err, result) => {
if (err) {
console.log(err);
} else {
console.log(result);
}
}
);
위의 코드는 조건을 지정하고 조건에 맞는 문서 하나의 값을 변경하는 코드이다. updateOne() 메서드를 사용했다.
Delete
User.deleteOne({ email: 'yulgok@test.com' }, (err) => {
if (err) {
console.log(err);
} else {
console.log('Success!');
}
});
위의 코드도 마찬가지로 조건을 지정하고 해당되는 문서 하나를 삭제하는 코드이다. deleteOne() 메서드를 사용했다.
정리하기
Mongoose는 살짝 살짝 공부하긴 했지만 이번 기회에 정리했다. 확실히 MongoDB보다 편하게 코딩을 할 수 있다는 장점이 있다. 그렇기 때문에 MongoDB의 원리를 제대로 이해한 후 Mongoose를 사용하면 보다 효율적으로 사용할 수 있다는 생각이 든다.