๐Ÿ“

mongoose

password์— ํŠน์ˆ˜๋ฌธ์ž๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ url ์ธ์ฝ”๋”ฉ์„ ํ•ด์•ผ ํ•˜๋‹ˆ ์•„๋ž˜ ํŽ˜์ด์ง€์—์„œ url ์ธ์ฝ”๋”ฉ์„ ํ•ด์ฃผ์„ธ์š”.
  • ํ”„๋กœ์ ํŠธ ๊ณจ๊ฒฉ
// npm init --yes // npm i express nunjucks mongoose // npm i nodemon --save-dev const express = require('express'); const mongoose = require('mongoose'); // ์ง€๊ธˆ์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. // const path = require('path'); // const morgan = require('morgan'); // const nunjucks = require('nunjucks'); const app = express(); app.use(express.json()); ////// // mongodb://[id:pw]localhost:27017/[project]์˜ ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์•„์ด๋”” ํŒจ์Šค์›Œ๋“œ๋ฅผ ๋งŒ๋“ค์–ด์ค€ ์ ์ด ์—†์œผ๋ฏ€๋กœ ์ ์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค. project๋Š” ๋’ค์—์„œ ์–ธ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค. // ๋‹ค๋ฅธ ํŒŒ์ผ๋กœ ๋งŒ๋“ค์–ด์„œ ์ด ๋ถ€๋ถ„์„ ๋ชจ๋“ˆ๋กœ exportํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ํ๋ฆ„๋งŒ ๋ด์ฃผ์„ธ์š”. mongoose.connect('mongodb://localhost:27017/test125'); // 2. ์—ฐ๊ฒฐ DB ์‚ฌ์šฉ const db = mongoose.connection; // 3. ์—ฐ๊ฒฐ ์‹คํŒจ db.on('error', function(){ console.log('์—ฐ๊ฒฐ ์‹คํŒจ'); }); // 4. ์—ฐ๊ฒฐ ์„ฑ๊ณต db.once('open', function() { console.log('์—ฐ๊ฒฐ ์„ฑ๊ณต'); }); //// app.get('/', (req, res, next) => { res.writeHead(200); res.end('hello db!'); }); app.use((req, res, next) => { res.status(404).send('๋ชป์ฐพ์Œ!'); }); app.listen(8080);
ย 
  • CRUD
const mongoose = require('mongoose'); // 1. DB์„ธํŒ…, url๋’ค์— project ์ฃผ์†Œ๋กœ ์ž๋™ ์ƒ์„ฑ๋จ // mongodb://[id:pw]localhost:27017/[project]์˜ ํ˜•ํƒœ mongoose.connect('mongodb://localhost:27017/test125'); // 2. ์—ฐ๊ฒฐ DB ์‚ฌ์šฉ const db = mongoose.connection; // 3. ์—ฐ๊ฒฐ ์‹คํŒจ db.on('error', function(){ console.log('์—ฐ๊ฒฐ ์‹คํŒจ'); }); // 4. ์—ฐ๊ฒฐ ์„ฑ๊ณต db.once('open', function() { console.log('์—ฐ๊ฒฐ ์„ฑ๊ณต'); }); // 5. Schema(์ž…๋ ฅ ๋ฐ์ดํ„ฐ ํ•„๋“œ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…) // type์€ String, Number, Date, Buffer, Boolean, Mixed, ObjectedId, Array const user_info = mongoose.Schema({ // ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž‘์„ฑ ๊ฐ€๋Šฅ // name : 'string', // age : 'number' userid: { type: String, required: true }, // unique: true๋‚˜ false๋ฅผ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. name: { type: String, required: true }, age: { type: Number, required: true }, gender: { type: String, required: true }, area: { type: String, required: false }, point: { type: Number } }); // 6. ์ •์˜๋œ ์Šคํ‚ค๋งˆ๋ฅผ ์ปดํŒŒ์ผ(๊ฐ์ฒด์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด model() ํ•จ์ˆ˜๋กœ ์ปดํŒŒ์ผ) const User = mongoose.model('Schema', user_info); // 7. newUser์— ๊ฐ’ ์ž…๋ ฅ! const newUser = new User({ userid : 'licat', name : 'Hojun.lee', age : 10, gender : '๋‚จ', area : 'jeju', point : 1000000, }); // 8. ๋ฐ์ดํ„ฐ ์ €์žฅ newUser.save(function(error, data){ if(error){ console.log(error); }else{ console.log('์ €์žฅ์™„๋ฃŒ!') } }); // 9. User ๋ ˆํผ๋Ÿฐ์Šค ์ „์ฒด ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ User.find(function(error, users){ console.log('-- ์ „์ฒด ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ ์‹œ์ž‘ --'); if (error) { console.log(error); } else { console.log(users); } console.log('-- ์ „์ฒด ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ ๋ --'); });
ย 
ย 
const mongoose = require('mongoose'); // 1. DB์„ธํŒ…, url๋’ค์— project ์ฃผ์†Œ๋กœ ์ž๋™ ์ƒ์„ฑ๋จ // mongodb://[id:pw]localhost:27017/[project]์˜ ํ˜•ํƒœ mongoose.connect('mongodb://localhost:27017/test125'); // 2. ์—ฐ๊ฒฐ DB ์‚ฌ์šฉ const db = mongoose.connection; // 3. ์—ฐ๊ฒฐ ์‹คํŒจ db.on('error', function(){ console.log('์—ฐ๊ฒฐ ์‹คํŒจ'); }); // 4. ์—ฐ๊ฒฐ ์„ฑ๊ณต db.once('open', function() { console.log('์—ฐ๊ฒฐ ์„ฑ๊ณต'); }); // 5. Schema(์ž…๋ ฅ ๋ฐ์ดํ„ฐ ํ•„๋“œ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…) // type์€ String, Number, Date, Buffer, Boolean, Mixed, ObjectedId, Array const user_info = mongoose.Schema({ // ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž‘์„ฑ ๊ฐ€๋Šฅ - 1 // name : 'string', // age : 'number' // ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฐœํ–‰ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅ - 2 userid: { type: String, required: true, // unique: true }, name: { type: String, required: true, // unique: false }, age: { type: Number, required: true }, gender: { type: String, required: true }, area: { type: String, required: false }, point: { type: Number, } }); // 6. ์ •์˜๋œ ์Šคํ‚ค๋งˆ๋ฅผ ์ปดํŒŒ์ผ(๊ฐ์ฒด์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด model() ํ•จ์ˆ˜๋กœ ์ปดํŒŒ์ผ) const User = mongoose.model('Schema', user_info); // 7. newUser์— ๊ฐ’ ์ž…๋ ฅ! const newUser = new User({ userid : 'licat', name : 'Hojun.lee', age : 10, gender : '๋‚จ', area : 'jeju', point : 1000000, }); // 2๋ฒˆ ํŒŒ์ผ ์ˆ˜ํ–‰ ํ›„ // 2.1. ์ง€์ •๋œ ๊ฐ’ ์ฝ๊ธฐ User.find({}, {_id:1, userid:1, gender:1}, function(error, user){ console.log('-- ์ง€์ •๋œ ๊ฐ’ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ ์‹œ์ž‘ --'); if (error) { console.log(error); } else { console.log(user); } console.log('-- ์ง€์ •๋œ ๊ฐ’ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ ๋ --'); }); // 2.2 1๊ฐœ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ User.findOne({userid : 'licat'}, function(error, user){ console.log('-- user 1๊ฐœ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ ์‹œ์ž‘ --'); if (error) { console.log(error); } else { console.log(user); } console.log('-- user 1๊ฐœ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ ๋ --'); }); // 2.3 ๋ฐ์ดํ„ฐ ์ˆ˜์ •ํ•˜๊ธฐ User.findById({_id:'61cc1f0e8c6318267edb0e1d'}, function(error, user){ console.log('-- user 1๊ฐœ ๋ฐ์ดํ„ฐ ์ˆ˜์ • ์‹œ์ž‘ --'); if (error) { console.log(error); } else { user.name = 'Gildong.hong'; user.save(function(error, modified_user){ if(error){ console.log(error); } else { console.log(modified_user); } }); } console.log('-- user 1๊ฐœ ๋ฐ์ดํ„ฐ ์ˆ˜์ • ๋ --'); }); // 2.3 user๋Š” ์‚ญ์ œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ญ์ œ ํ•„๋“œ๋ฅผ ํ•˜๋‚˜ ๋” ๋งŒ๋“ค์–ด์„œ ๋ณด๊ด€ํ•˜์„ธ์š”. // User.remove({_id:'61cc1f0e8c6318267edb0e1d'}, function(error, output){ // console.log('-- ์‚ญ์ œ --'); // if(error){ // console.log(error); // } // });
ย