(NodeJS, Yarn, MongoDB 설치됨)
먼저 프로젝트를 생성.(React프로젝트 할꺼기 때문에 create-react-app으로 생성해봄)
원하는 디렉토리가서 cmd창 열고, 아래와 같이 명령어 치면 된다.
C:\mynode>create-react-app simpleboard
프로젝트 명은 대문자 입력이 안됨.. 이러면 기본적인 react project 폴더와 module들이 생성된다.
기본적으로 위와 같은 구조로 프로젝트가 생성된다. 파란색 표기 부분처럼 server(express + mongodb)를 따로 폴더를 둬서 관리.
먼저, /server/main.js를 아래와 같이 만든다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | var express = require('express'); var app = express(); var bodyParser = require('body-parser'); var mongoose = require('mongoose'); var api = require('./routes/index'); //conncet to mongodb server var db = mongoose.connection; db.on('error', console.error); db.once('open', function(){ console.log('connected mongodb server!'); }); mongoose.connect('mongodb://localhost/test'); const port = 4000; //bodyParser setting app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); app.use('/api', api); app.listen(port, () => { console.log('Express is listening on port', port); }); | cs |
필요한 모듈들을 require 해준다. (아, 그전에 express, body-parser, mongoose를 패키지 dependency에 추가해줘야한다.
cmd로 npm install --save express body-parser mongoose 쳐주면된다.)
그리고 mongodb server를 커넥트 하고, app(express 인스턴스)을 위와 같이 셋팅 해주었다.
api는 모든 db요청을 받는(?) 인스턴스이다.
그 다음, model 스키마를 정의 해야한다.
/models/board.js를 아래와 같이 만들자.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | var mongoose = require('mongoose'); const Schema = mongoose.Schema; const Board = new Schema({ writer : String, contents : String, date: { created : {type:Date, default:Date.now}, edited : {type:Date, default:Date.now} }, is_edited : {type:Boolean, default:false} }) module.exports = mongoose.model('board',Board); | cs |
위와 같이 스키마를 선언해주었다. (이 후, data를 insert하면 boards라는 이름의 collection이 자동 생성된다. 뒤에 -s가 붙는데... 규약같은게 있나보다...)
/routes/board.js 를 아래와 같이 만든다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | var express = require('express'); var Board = require('../models/board'); var mongoose = require('mongoose'); const router = express.Router(); router.post('/', (req, res) => { if (req.body.username === "") { return res.status(400).json({ error: "EMPTY USERNAME", code: 2 }); } if (req.body.contents === "") { return res.status(400).json({ error: "EMPTY CONTENTS", code: 2 }); } let board = new Board({ writer: req.body.username, contents: req.body.contents }); board.save(err => { if (err) throw err; return res.json({ success: true }); }); }); module.exports = router; | cs |
우선 POST요청(쓰기)만 대충 구현하였다.
/routes/index.js
1 2 3 4 5 6 7 8 | var express = require('express'); var board = require('./board'); const router = express.Router(); router.use('/board',board); module.exports = router; | cs |
url은 board로 설정하였다. (최종적으로, /api/board/* 가 될 것이다.)
실행 해보자.
연결 성공했다.
그리고 post man을 이용해서 post요청 하나 해보면 data가 들어갈 것이다.
데이터가 들어간걸 확인 할 수 있다.
'개발 이야기 > NodeJS' 카테고리의 다른 글
NodeJS 인기있는 Logging 모듈 Winston (0) | 2019.02.20 |
---|---|
NodeJS validate로 요청 데이터 검사 (0) | 2019.02.11 |
NodeJS Express 간단한 서버 만들기 (0) | 2019.02.11 |
우분투에 Nodejs설치 하기 (0) | 2018.07.28 |
NodeJS 시작하기 (0) | 2018.06.23 |