본문 바로가기
Web/Node.js

MongoDB를 통해 Node.js에서 간단한 REST API 구현

by supdev 2017. 7. 6.

1. Model을 만든다.(=DTO or VO)


models/user.js

models/user.js

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var userSchema = new Schema({
email: String,
passwd: String,
created_date: {type: Date, default: Date.now()}
});

module.exports = mongoose.model('user', userSchema);


2.라우팅 파일 수정


routes/index.js


routes/index.js 파일에 만들었던 User Model을 추가한다.


구현한 기능은 3가지 입니다.


(1) POST /regist

MongoDB로 입력된 데이터를 추가한다.


(2) GET /get

저장되어있는 User 정보를 출력한다.


(3) GET /get/email/:email

해당 Email에 해당하는 User 정보를 출력한다.

// routes/index.js

var express = require('express');
var router = express.Router();
var User = require('../models/user');

/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});

router.post('/regist', function(req, res, next){
var user = new User();
user.email = req.body.email;
user.passwd = req.body.passwd;

user.save(function (err) {
if(err){
console.log(err);
res.json({result: 0});
return;
}
res.json({result: 1});
})
});

router.get('/get', function (req, res) {
User.find(function (err, users) {
if(err) return res.status(500).send({error: 'database find failure'});
res.json(users);
})
})

router.get('/get/email/:email', function (req, res) {
User.findOne({email: req.params.email}, function (err, user) {
console.log(req.params.email);
if(err) return res.status(500).send({error: 'database find failure'});
if(!user) return res.status(404).send({error: 'user not found'});
res.json(user);
})
})

module.exports = router;


3. EJS파일 수정


index.ejs

<!DOCTYPE html>
<html>
<head>
<title><%= title %></title>
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<h1><%= title %></h1>
<p>Welcome to <%= title %></p>
<form action="/regist" method="post">
<div>email<input type="text" name="email"></div>
<div>password<input type="password" name="passwd"></div>
<input type="submit" value="등록">
</form>
</body>
</html>