mongoose

  • MongoDB ODM( Object Document Model )

  • RDMS ์— ORM์ด ์žˆ๋‹ค๋ฉด MongDB์—” ODM

  • MongoDB์—” ์Šคํ‚ค๋งˆ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์Šคํ‚ค๋งˆ๋ฅผ ์ ์šฉ ํ• ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค

  • ์ฆ‰, ๋ฌธ์„œ๋ฅผ DB์—์„œ ์กฐํšŒํ•  ๋•Œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ์—ญํ• 

์Šคํ‚ค๋งˆ

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ ˆ์ฝ”๋“œ์˜ ํฌ๊ธฐ, ํ‚ค(key)์˜ ์ •์˜, ๋ ˆ์ฝ”๋“œ์™€ ๋ ˆ์ฝ”๋“œ์˜ ๊ด€๊ณ„, ๊ฒ€์ƒ‰ ๋ฐฉ๋ฒ• ๋“ฑ์„ ์ •์˜ํ•œ ๊ฒƒ

  • RDMS์˜ ๊ฒฝ์šฐ id, userid, point ๋“ฑ์˜ ์ •์˜๋œ ํ•„๋“œ์— ๋งž๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ ๊ทธ๋Ÿฌ๋‚˜ MongoDB๋Š” insert๋•Œ๋งˆ๋‹ค ๋„ฃ๋Š” ์–‘์‹์„ ๋ฐ”๊ฟ€์ˆ˜ ์žˆ์Œ

์žฅ์ 

  • ํ•˜๋‚˜์˜ ๋ชจ๋ธ์„ ์ •ํ•ด ๋†“๊ณ  ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅ( ๋‹ค๋ฅธ๊ณณ์— ์‚ฌ์šฉ์‹œ postmodel๋งŒ ๋ถˆ๋Ÿฌ์˜ค๋ฉด ๋œ๋‹ค. )

  • ๋ชจ๋ธ์— ์ €์žฅ ์‹œ ์ˆซ์ž ๋˜๋Š” ํ—ˆ์šฉ ๋ฌธ์ž์—ด์„ ์ •ํ• ์ˆ˜ ์žˆ๋‹ค. ( validator ์ ์šฉ )

์‚ฌ์šฉ๋ฒ•

  • mongoose ํŒจํ‚ค์ง€ import

  • Schema ๋ฐ›์•„์˜จ๋‹ค

  • var mongoose = require('mongoose');

  • var Schema = mongoose.Schema;

mongoose ๋ฐ MongoDB์ ‘์†

var mongoose = require('mongoose');
var autoIncrement = require('mongoose-auto-increment');
// mongoose ์™€ mongoose-auto-increment
// (insert ์‹œ๋งˆ๋‹ค primary ํ‚ค ๊ฐ’ 1์”ฉ ์ฆ๊ฐ€ )
var db = mongoose.connection;  //์ ‘์†
db.on( 'error' , console.error );  //์—๋Ÿฌ์‹œ ๋กœ๊ทธ๋ฅผ ๋ฟŒ๋ฆผ
db.once( 'open' , function(){
    console.log("MongoDB connect");
});  //์ ‘์† ์„ฑ๊ณต์‹œ ์ฝ˜์†”์— ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ
var connect = mongoose.connect('mongodb://127.0.0.1/post');
//post ๋ผ๋Š” DB ๋ฐ collection์— ์ƒ์„ฑ , ์ ‘์†

autoIncrement.initialize(connect;
//primary Key ์ž๋™ ์ฆ๊ฐ€ ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์ •
var PostModel = require('../models/ProductsModel);
// ํ•ด๋‹น ๋ชจ๋ธ์„ ๋ถˆ๋Ÿฌ์˜จ๋‹ค
// save
var product = new ProductsModel({ // ์Šคํ‚ค๋งˆ์—์„œ ์ง€์ •ํ•œ ํ•„๋“œ๋ช…์— ์ผ์น˜ํ•˜๊ฒŒ ์ง€์ •
    name : req.body.name,
    price : req.body.price,
    description : req.body.description,
});

product.save( function(err){ // ๊ทธ๋ฆฌ๊ณ  ์ €์žฅํ•œ๋‹ค.
});
// find ๊ฒ€์ƒ‰ํ›„ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ›๋Š”๋‹ค. 
Model.find( {  id : 1000 } , function(err, posts){
             console.log(posts);
});
// findOne ๊ฒ€์ƒ‰์กฐ๊ฑด๊ณผ ์ผ์น˜ํ•˜๋Š” ํ•œ์ค„๋งŒ ๋ฐ›๋Š”๋‹ค.
Model.findOne( {  id : 1000 } , function(err, post){
             console.log(post);
});
// update 
ProductsModel.update( 
    { id : req.params.id} , // ์กฐํšŒ์กฐ๊ฑด
    { $set : query }, // ์Šคํ‚ค๋งˆ์™€ ์ผ์น˜ํ•˜๊ฒŒ ์ž‘์„ฑ
    function(err){} // ์ฝœ๋ฐฑํ•จ์ˆ˜ ์ž‘์„ฑ
);
// remove 
ProductsModel.remove(
     {id : req.params.id}, // ์กฐํšŒ์กฐ๊ฑด
     function(err){ // ์ฝœ๋ฐฑํ•จ์ˆ˜
});

Last updated