Mongodb 연동
node js 와 mongodb 를 mvc 패턴에 맞게 설계를 하였습니다. 같은 mvc 패턴이어도 model 부분에다가 mongoose.model 을 exports 하는 경우가 일반적이던데 어떤 방식이 맞다 틀리다는 아직 모르겠습니다.
app.js
app.js에서는 각종 모듈을 불러옵니다. catalog는 라우팅을 위한 모듈로 정의하였습니다.
var express = require('express');var app = express();var catalog = require('./api/routes/catalog');var bodyParser = require('body-parser');app.use(bodyParser.urlencoded({ extended: true }));app.use(bodyParser.json());// mongoose requirevar mongoose = require('mongoose');//testDB settingmongoose.connect('mongodb://localhost:27017/testDB');// 3. use testDBvar db = mongoose.connection;// 4. connect errordb.on('error', function(){});// 5. connect successdb.once('open', function() {});app.use('/', catalog);app.listen(3000, function() {});
catalog.js
라우팅 모듈로서 정의하였습니다.
var express = require('express');var router = express.Router();var userController = require('../controllers/userController');router.get('/', function (req, res) {res.end('hello world');});//user routerrouter.post('/users', userController.createUser);router.get('/users/:uid', userController.getUser);router.put('/users/:uid', userController.updateUser);router.delete('/users/:uid', userController.deleteUser);module.exports = router;
userModel.js
mongoose.Schema 를 통해 Schema를 정의합니다. mongoose.model을 통해 mongoDB의 collection을 생성할 수 있습니다. 아래 예제를 통해 mongoDB 콜솔에서 testDB에 show collections 을 입력하면 users라는 collection이 생성이 되었음을 확인할 수 있습니다.
!model을 user라고 정의하니 users라는 복수형의 컬렉션 네임이 지정되었습니다. 이 이유는 잘 모르겠네요
var mongoose = require('mongoose');var Schema = mongoose.Schema;var userSchema = new Schema({"userPw": String,"modifyDate" : Date});module.exports = mongoose.model('user', userSchema);
userController.js
해당 모듈을 불러옵니다.
var mongoose = require('mongoose');var User = require('../models/userModel');
데이터 저장을 위해 save()함수를 이용합니다.
exports.createUser = function(req, res) {var newUser = new User(req.body);newUser.modifyDate = new Date();res.end('createUser');};
데이터를 얻기 위해 findOne() 함수를 이용합니다. findById 는 _id의 데이터를 기준으로 하여 얻을 수 있습니다. 데이터 전체를 얻기 위해서는 find() 함수를 이용합니다.
exports.getUser = function(req, res) {if(error) {res.end('getUser');};
특정 데이터 수정 부분입니다.
exports.updateUser = function(req, res) {if(error) {user.modifyDate = new Date();res.end('updateUser');};
특정 데이터 삭제 부분입니다.
exports.deleteUser = function(req, res) {if(error) {};
'Framework > Nodejs' 카테고리의 다른 글
[마이크로서비스] Seneca (0) | 2017.10.02 |
---|---|
비동기와 CPU Bound (0) | 2017.09.04 |
이메일 발송 (0) | 2017.07.13 |
MVC model (0) | 2017.07.07 |
mocha (0) | 2017.07.05 |