728x90
반응형
기본 준비 사항
- Install Node.js
- Install MongoDB
- # npm install express-generator -g // express 설치
- # express -h // 명령의 옵션 확인
- # express rest-api -e // rest-api 폴더 생성 ejs템플릿 사용
- # cd rest-api && npm install // 폴더이동 node 모듈 설치
- # npm install mongoose --save // 해당 프로젝트에 의존하는 mongoose 모듈 설치
- # mongo // MongoDB 서버 실행
- # npm start
- localhost:3000 접속
폴더구조
- bin : 익스프레스 설정파일인 app.js 파일을 가져와 http 객체와 연결하는 작업을 진행 실제 서버를 구동하는 파일
- node_modules : npm install 을 하게되면 설치되는 node 모듈모음
- public : 정적폴더로 웹서버의 기본적인 구성
- routes : 라우팅설정 파일 모음
- view : 템플릿 보관 폴더
- app.js : 익스프레스 객체를 생성하고 환경설정을 하는 js 파일
app.js 에 mongoose 모듈 및 DB 연결 설정 추가
var mongoose = require('mongoose');
mongoose.Promise = global.Promise;
mongoose.connect('mongodb://localhost:27017/local')
.then(() => console.log('connected succesful'))
.catch((err) => console.error(err));
connected succesful 이란 문자가 터미널에 찍히면 정상
/model/Products.js 에 Schema Model 설정
var mongoose = require('mongoose');
// 스키마 설정
var ProductSchema = new mongoose.Schema({
item_name : String,
item_desc : String,
item_price : Number,
updated_ad : {type: Date, default: Date.now},
});
module.exports = mongoose.model('Product', ProductSchema);
REST API 경로작성
Method | Endpoints | Description |
---|---|---|
GET |
/items |
모든상품정보 |
GET | /items/:id | 하나의 상품정보 |
POST | /items | 상품 추가 |
PUT | /items/:id | 상품 갱신 |
DELETE | /items/:id | 상품 삭제 |
/routes/items.js 파일 추가
var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var Item = require('../model/Product');
// GET All Items
router.get('/', function(req, res, next) {
Item.find(function (err, items) {
if(err) return next(err);
res.json(items);
});
});
// Single item
router.get('/:id', function(req, res, next) {
Item.findById(req.params.id, function(err, post) {
if(err) return next(err);
res.json(post);
});
});
// save item
router.post('/', function(req, res, next) {
Item.create(req.body, function(err, post) {
if(err) return next(err);
res.json(post);
});
});
// update
router.put('/:id', function(req, res, next) {
Item.findByIdAndUpdate(req.params.id, req.body, function(err, post) {
if(err) return next(err);
releaseEvents.json(post);
});
});
// delete
router.delete('/:id', function(req, res, next) {
Item.findByIdAndRemove(req.params.id, req.body, function(err, post) {
if(err) return next(err);
res.json(post);
});
});
module.exports = router;
app.js 코드 추가
var items = require('./routes/items');
app.use('/items', items);
code-reading 블로그에 방문해 주셔서 환영합니다.
댓글은 모두 환영하니 많이 달아주세요.
댓글은 모두 환영하니 많이 달아주세요.
728x90
반응형
'지난포스트 (deprecated) > NodeJS (deprecated)' 카테고리의 다른 글
heroku + mLab 프로젝트 업로드 (0) | 2018.12.29 |
---|---|
Node.js + Express + MongoDB CRUD 만들기 (0) | 2018.12.28 |
express 파일 모듈화 방법 (0) | 2018.12.27 |
Node.js + Express + MongoDB 사용하기 (0) | 2018.12.20 |
My Node.js Tutorial (0) | 2018.12.20 |