본문 바로가기
블로그 이미지

방문해 주셔서 감사합니다! 항상 행복하세요!

  
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : lts06069@naver.com


몽고DB/Nodejs 몽고DB

Node.js Http parser 그리고 몽고DB

야근없는 행복한 삶을 위해 ~
by 마샤와 곰 2019. 4. 27.

 

 

express나 http 모듈을 사용하다 보면, 해당 Request에 대해서
요청 된 값을 받아오려 하는데...
왠걸? http.get...이런식으로 하면 에러가 나버린다..
body-parser모듈을 설치하면 데이터 파싱을 쉽게 할 수 있다.

const express = require('express');
const bodyParser = require('body-parser');
const compression = require('compression');
app.use(bodyParser.urlencoded({
    extended: false  
})).use(compression()); //압축옵션, http 응답을 빨리하기 위해

app.post('/ask', (req, res) => {
    const reqObj = req.body; //reqObj.원하는 요청 값
});

몽고db는 no-sql로 일반 R데이터 베이스랑 속도비교를 해보니..
단순한 INSERT 쿼리만 비교하더라도 몽고는 10초정도에 100만건, R데이터베이스(오라클,MY-SQL,MS-SQL등등)는 10초에 몇천건 정도로 차이가 많이 났다..
물론..관계형 데이터베이스가 아니어서 Join같이 관계가 필요한 프로젝트에서는 쓰기 어렵지만..
재미있는건 이 몽고db를 node에서 쓰려면 mongoose가 필요한데..
데이터를 collection에 넣는 경우 가령,  test에 넣으면 알아서..
tests로 되고, table이라는 곳에 넣으려면 tables가 되버린다;;
알아서 복수(?)형태로 넣어버리는...
Node에서 연동하는 것은 매우 쉽다.

const mongoose = require('mongoose'); //필요한 라이브러리
const mongoSchema = new mongoose.Schema({  //집어넣을 스키마 생성
    numberData: {
        type: Number,
        required: true
    },
    StringData: {
        type: String,
        required: true
    },
    DateData: {
        type: Date,
        required: true
    }
});
var db = mongoose.connection;
db.on('error', console.error);
db.once('open', function () {});
mongoose.connect("mongodb://test:test@127.0.0.1:27017/test", { "useNewUrlParser": true })
   .then(() => 접속하고나서 할 행동..)
   .catch(e => 에러나면 할 행동);
Model = mongoose.model('test', mongoSchema);
mongoose.Promise = global.Promise;

var model = new Model(); //만들어진 모델객체 생성
model.numberData = 10;
model.StringData = 'Hello world';
model.DateData = new Date();
model.save(function (err) {   //저장, 조회, 기타 등등등 행위..
   if (err) {
      console.error(err);
   }
});
반응형
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)

댓글