NoSQL인 몽고DB 사용을 훨씬 편하게 해주는 라이브러리이다.
이게 몽구스의 기본 작동 원리 이다.
NoSQL이기에 기본적으로 스키마가 존재하지 않는 MongoDB에 문서의 정보를 가져와서 스키마를 부여해주고 코드 내부에서는 스키마를 기준으로 조작할 수 있는 것이 몽구스이다.
function connectDB(){
var databaseUrl = 'mongodb://localhost:27017/local';
console.log('데이터베이스 연결을 시도합니다.');
mongoose.Promise = global.Promise;
mongoose.connect(databaseUrl);
database = mongoose.connection;
database.on('error', console.error.bind(console, 'mongoose connection error.'));
database.on('open', function(){
console.log('데이터베이스에 연결 되었습니다. : ' + databaseUrl);
UserSchema = mongoose.Schema({
id: String,
name: String,
password: String
});
console.log('UserSchema 정의함.');
UserModel = mongoose.model("uers", UserSchema);
console.log('UserModel 정의함.');
});
database.on('disconnected', function(){
console.log('연결이 끊어졌습니다. 5초 후 다시 연결합니다.');
setInterval(connectDB,5000);
});
};
mongoose.connect(databaseUrl)을 통해서 연결을 하고 이것을 databse라는 변수에 저장을 해주면 mongoose.connection의 이벤트로 조작을 할 수 있다. 여기서 사용한건 처음 데이터베이스 연결이 되었을 때 일어나는 이벤트인 'open'을 보면 스키마를 미리 지정을 해주고 이 스키마와 "users"를 연결시켜준다.
var addUser = function(database, id, password, name, callback){
console.log('addUser 호출됨 : ' + id + ', ' + password + ', ' + name);
var user = new UserModel({"id":id, "password":password, "name":name});
user.save(function(err){
if (err){
callback(err,null);
return;
}
console.log("사용자 데이터 추가함.");
callback(null, user);
});
}
addUser의 코드이다. 이전 포스트 보았다면 이전 addUser에 비해서 한참 간소화 된 것을 알 수가 있다. user라는 변수에 UserModel 객체를 하나 만들어서 넣어준다. 그리고 매개변수로 들어온 id, password, name을 매칭 시켜준다. 이 코드에서는 save함수를 사용해서 사용자 데이터를 추가하는 것을 볼 수 있다.
var authUser = function(database, id, password, callback){
console.log('authUser 호출됨.');
UserModel.find({"id" : id, "password" : password},function(err,results){
if(err){
callback(err,null);
return;
}
console.log('아이디 [%s], 비밀번호 [%s]로 사용자 검색 결과', id, password);
console.dir(results);
if(results.length > 0){
console.log('일치하는 사용자 찾음.', id, password);
callback(null, results);
}else{
console.log('일치하는 사용자 못 찾음.');
callback(null, null);
}
});
}
마찬가지로 authUser이다. 이 코드에서는 find를 통해서 id와 password 모두 동일한 사용자를 찾아서 사용자 정보 검색을 할 수 있다.
위의 코드를 제외한 나머지 Route.route와 app.post는 건드리지 않았다. 결국 callback 함수 부분은 동일한 결과를 내고 그 결과를 바탕으로 홈페이지에 노출 시키고 동작시키는 것 같아서 그런 것 같다.
'공부 > Node.js' 카테고리의 다른 글
[Node.js] express로 웹 서버 만들기(요청 객체와 응답 객체) (0) | 2020.08.07 |
---|---|
[Node.js] express로 웹 서버 만들기(use() 미들웨어) (0) | 2020.08.07 |
[Node.js] MongoDB를 사용한 사용자 추가 (0) | 2020.07.28 |
[Node.js] MongoDB에 대한 issue (0) | 2020.07.27 |
[Node.js] body-parser관련 issue (0) | 2020.07.16 |