NodeJS MongoDB 연동하기
(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); }); Colored by Color Scripter 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); Colored by Color Scripter 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; Colored by Color Scripter 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; Colored by Color Scripter cs
url은 board로 설정하였다. (최종적으로, /api/board/* 가 될 것이다.)
실행 해보자.
연결 성공했다.
그리고 post man을 이용해서 post요청 하나 해보면 data가 들어갈 것이다.
데이터가 들어간걸 확인 할 수 있다.
from http://basketdeveloper.tistory.com/21 by ccl(A) rewrite - 2020-03-07 17:20:21
댓글
댓글 쓰기