반응형
컬렉션 안에 똑같은 속성을 가진 객체를 넣는다면 관계형 DB처럼 어떤 속성이 있는지 미리 알 수 있다.
이런 틀을 제공하는 것 중 몽구스 모듈이 대표적이다.
몽구스 모듈을 활용하여 스키마를 만들고, 스키마에 맞는 모델을 만들어 데이터를 보다 쉽게 관리한다.
스키마 추가
DB연결
기본 promise(mPromise)를 노드의 promise로 교체
mongoose.Promise = global.Promise;
open, error, disconnect등의 이벤트로 연결 상태 확인 가능하다.
//db에 연결
function connectDB(){
//db 연결정보
var databaseUrl = 'mongodb://localhost:27017/local';
//db 연결
console.log('...db에 연결합니다. ' );
mongoose.Promise = global.Promise;
mongoose.Connect(databaseUrl);
database = mongoose.connection;
//db 연결이 안됬을때
database.on('error', console.error.bind(console, 'mongoose 연결 error'));
//db가 연결됬을때
database.on('open', function(){
console.log('db에 연결됬습니다. :'+ databaseUrl );
//스키마 정의
userSchema =mongoose.Schema({
id :String,
name: String,
password:String
});
console.log('스키마가 정의됨' );
//userModel 정의
userModel = mongoose.model("users", userSchema);
console.log('사용자 모델 정의됨' );
});
//연결이 끊어졌을때 5초 후 다시 연결
database.on('disconnected', function(){
console.log('연결 끊어짐. 5초후 다시 연결합니다' );
setInterval(connectDB, 5000);
});
}
사용자 추가
// 사용자 추가
var addUser = function(database, id, password, name, callback){
console.log('adduser 호출됨 '+ id);
var user = new userModel({"id":id, "password":password, "name":name});
user.save(function(err, result){
if(err){
callback(err, null);
return;
}
console.log('사용자 데이터 추가함');
callback(null,user);
});
}
사용자 인증
// 사용자인증
var authUser = function(database,id, password, callback){
console.log('authUser 함수 호출됨');
//id랑 비번으로 인증여부 확인
userModel.find({"id":id, "password":password}, function(err,results){
if(err){
callback(err,null);
return;
}
console.log('id :%s, password: %s 로 검색한 결과', id, password);
console.dir(results);
if(results.length > 0){
console.log('일치하는 ㅅ 찾음');
callback(null, results);
}else{
console.log('일치하는 사람 없음');
callback(null,null);
}
});
}
반응형
'IT > web' 카테고리의 다른 글
Node.js] MySQL 연결, 사용자 추가, 로그인 (0) | 2020.02.01 |
---|---|
Node.js] crypto 모듈로 비밀번호 암호화하기 (0) | 2020.01.31 |
Node.js] MongoDB 연결, 사용자 추가, 데이터일치여부 확인 (0) | 2020.01.28 |
Node.js] try, catch, throw (0) | 2020.01.26 |
Node.js] console.log // dir // table .. (0) | 2020.01.25 |
댓글