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); // } // });