코드
여기까지가 거의 복습하는 구간인데 사용자의 리스트를 뽑아내는 걸 진행하였다. 아직 활용이 부족하긴한데 중요하다고 생각하는 /process/listuser 부분에 대해서 포스팅 하도록 하겠다.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>사용자 리스트 테스트</title>
</head>
<body>
<h1>사용자 리스트</h1>
<br>
<form method="post" action="/process/listuser">
<table>
<tr>
<td><label>아래 [전송] 버튼을 누르세요.</label></td>
</tr>
</table>
<input type="submit" value="전송" name="">
</form>
</body>
</html>
일단은 HTML 코드이다. 이 때까지 사용했던 로그인이나 로그아웃이나 404나 여러가지 html 중 가장 간단하게 그냥 실행을 위해서 사용하는 코드이다.
router.route('/process/listuser').post(function(req, res){
console.log('/process/listuser 호출됨.');
if(database){
UserModel.findAll(function(err, results){
if(err){
console.error('사용자 리스트 조회 중 오류 발생 : ' + err.stack);
res.writeHead('200', {'Content-Type' : 'text/html; charset=utf8'});
res.write('<h2>사용자 리스트 조회 중 오류 발생</h2>');
res.write('<p>' + err.stack + '</p>');
res.end();
return;
}
if(results){
console.dir(results);
res.writeHead('200', {'Content-Type' : 'text/html; charset=utf8'});
res.write('<h2>사용자 리스트</h2>');
res.write('<div><ul>');
for(var i = 0 ; i < results.length ; i++){
var curId = results[i]._doc.id;
var curName = results[i]._doc.name;
res.write(' <li>#' + i + ' : ' + curId + ', ' + curName + '</li>');
}
res.write('</ul></div>');
res.end();
} else {
res.writeHead('200', {'Content-Type' : 'text/html; charset=utf8'});
res.write('<h2>사용자 리스트 조회 실패</h2>');
res.end();
}
});
} else {
res.writeHead('200', {'Content-Type' : 'text/html; charset=utf8'});
res.write('<h2>데이터 베이스 연결 실패</h2>');
res.end();
}
});
/process/listuser 코드이다. 여기서 보면 findAll 함수는 미리 정의를 해둔 함수이다. _doc는 results라는 findAll에서 넘어온 데이터에서 파일을 탐색할 때 사용한다. 정확하게는 문서형 NoSQL인 MongoDB의 내부를 볼 때 사용한다고 보면 된다.
_doc를 순회시켜서 사용자리스트를 뽑아낸다.
UserSchema.static('findById', function(id, callback){
return this.find({id : id}, callback);
});
UserSchema.static('findAll', function(callback){
return this.find({}, callback);
});
이렇게 두 가지 함수를 미리 추가 시켜두었다. 위치는 UserSchema를 설정하는 connectDB에서 Schema를 미리 설정을하고 추가로 함수도 지정해주었다.(static은 전역 함수를 의미하는 것 같다.)
실행
일단 실험을 위해서 listuser.html로 실행을 했다. 여기서 전송 버튼을 누르면
이런식으로 사용자 리스트가 나오게 된다. 여기서 조금 더 나아가서 사용자를 추가 해보았다.
깨알 같은 회원가입을 추가 시켜 놓았다.
이렇게 사용자를 추가하면
listuser로 다시 돌아왔을 때 #4가 추가로 생성된 것을 볼 수 있다. 여기까지가 진행한 것을 정리한 것이다. 여기서 내가 자주적으로 뭔가 할 수 있는게 크게는 없지만 메인을 로그인으로 두고 로그인에서 회원가입, listuser 등을 통합 시키면 좋지 않을까?
'공부 > Node.js' 카테고리의 다른 글
[Node.js] 모듈화 (0) | 2020.08.11 |
---|---|
[Node.js] express로 웹 서버 만들기(virtual 함수와 암호화) (0) | 2020.08.11 |
[Node.js] express로 웹 서버 만들기(MongoDB) (0) | 2020.08.10 |
[Node.js] express로 웹 서버 만들기(multer미들웨어, 이미지 업로드) (0) | 2020.08.10 |
[Node.js] express로 웹 서버 만들기 (쿠키와 세션) (0) | 2020.08.10 |