이번 강좌에서는 document를 수정하는 update() 메소드에 대하여 알아보도록 하겠습니다.정의MongoDB에서는 update() 메소드를 통하여 데이터를 수정 할 수 있습니다. 이 메소드의 구조는 다음과 같습니다:db.collection.update( , , { upsert: , multi: , writeConcern: } )Collection 안의 document(들)을 수정합니다. 이 메소드를 통하여 특정 field 를 수정 할 수도 있고 이미 존재하는 document를 대체(replace) 할 수도 있습니다.update() 메소드의 기본 옵션으로는 단 하나의 document를 수정합니다.ParameterType설명*querydocument업데이트 할 document의 criteria 를 정합..
이번 강좌에선 find() 메소드를 더욱 더 활용하기 위해 필요한 sort(), limit(), skip() 메소드에 대해 배워보겠습니다. 그냥 find() 메소드를 사용하면 criteria 에 일치하는 모든 document 들을 출력해주기 때문에, 예를들어 페이지 같은 기능을 사용한다면 불적합하겠죠. 그렇다고 find() 메소드 자체에 어디부터 어디까지 불러오겠다 라고 설정하는 매개변수는 따로 없습니다.find() 메소드를 사용했을 시 cursor 형태의 결과값을 반환하는데요, 이 객체가 가지고 있는limit() 메소드와 skip() 메소드를 통하여 보이는 출력물의 갯수를 제한 할 수 있고, sort() 메소드를 사용하여 데이터를 순서대로 나열 할 수 있습니다. 샘플 데이터쿼리 연습을 해보기 위해 샘플..
이번 강좌에선 Document를 조회하는 메소드인 find() 메소드를 자세히 알아보도록 하겠습니다.Document 조회: db.COLLECTION_NAME.find(query, projection)이 메소드에서 사용되는 매개변수에 대하여 알아봅시다parameterType설명querydocumentOptional(선택적). 다큐먼트를 조회할 때 기준을 정합니다. 기준이 없이 컬렉션에 있는 모든 다큐먼트를 조회 할때는 이 매개변수를 비우거나 비어있는 다큐먼트 { } 를 전달하세요.projectiondocumentOptional. 다큐먼트를 조회할 때 보여질 field를 정합니다. 반환(return) 값: cursorcriteria에 해당하는 Document들을 선택하여 cursor를 반환합니다. curso..
이번 강좌에서는 Database, Collection, Document 를 생성하는 명령어와 제거하는 명령어를 배워보도록 하겠습니다. 이 세가지 키워드의 관계는 아래 이미지와 같습니다. 이 단어들이 생소하신분은 전 강좌를 읽어주세요.Database 생성: useuse DATABASE_NAME 명령어를 통하여 Database를 생성 할 수 있습니다. 생성 후, 생성된 데이터베이스를사용하게 되구요, 데이터베이스가 이미 존재하는 경우엔 현존하는 데이터베이스를 사용합니다.예제: mongodb_tutorial 이라는 데이터베이스를 생성합니다.> use mongodb_tutorial switched to db mongodb_tutorial 현재 사용중인 데이터베이스를 확인하려면 db 명령어를 입력하세요.> db m..
소개MongoDB는 C++로 작성된 오픈소스 문서지향(Document-Oriented) 적 Cross-platform 데이터베이스이며, 뛰어난 확장성과 성능을 자랑합니다. 또한, 현존하는 NoSQL데이터베이스 중 인지도 1위를 유지하고있습니다.NoSQL?흔히 NoSQL이라고 해서 아, SQL이 없는 데이터베이스구나! 라고 생각 할 수도 있겠지만, 진짜 의미는 Not Only SQL 입니다. 기존의 RDBMS의 한계를 극복하기 위해 만들어진 새로운 형태의 데이터저장소 입니다. 관계형 DB가 아니므로, RDMS처럼 고정된 스키마 및 JOIN 이 존재하지 않습니다.Document?Document Oriented 데이터베이스라는데.. 여기서 말하는 Document가 뭘까요? 문서? 이게 그냥 ‘문서’ 로 번역해..
다음은 회원가입 프로젝트를 이용한 라우트 분리와 게시글의 추가, 수정, 삭제 기능을 물리적으로 합치는 것에 대해서 진행하겠습니다. 소스코드 : https://github.com/swk3169/nodejs-membership 라우트 : 길을 내다 라우트를 분리하는 이유 : 코드의 가독성을 높이기 위해서 코드를 필요에 따라서 길을 나누는 것 기존의 facebook인증을 통한 회원가입 프로젝트 코드 app_passport_facebook_mysql.js var express = require('express');var session = require('express-session');var MySQLStore = require('express-mysql-session')(session);var bodyPars..
다음은 Facebook API를 이용한 회원가입, 로그인 시스템입니다. Facebook에 가입이 되어 있어야만 사용할 수 있으니 유의바랍니다. https://developers.facebook.com/ 개발자 페이스북 사이트에 접속합니다. Facebook API를 위한 App 추가합니다. 등록할 App 이름, 본인 facebook 연락처 이메일을 등록합니다. 보안 서명 확인 후 제출합니다. 생성된 Facebook API App을 확인합니다 App의 대시보드 화면입니다. 본인이 등록한 App이 맞는지 확인합니다. 기본 설정에 들어간 후 앱 ID와 앱 시크릿 코드를 확인합니다. 향 후 Facebook API를 Node.js에 등록할 시 필요한 정보입니다. 카데고리는 기호에 맞게 선택해줍니다. ex) 웹 사이..
Passport 모듈을 이용한 사용자 인증을 진행해보겠습니다. 모듈 설치 http://www.passportjs.org/ passport 모듈에 관한 정보들을 담고 있는 웹사이트 Documentation -> Configure Passport 모듈을 사용하기 위한 환경설정 가이드입니다. 모듈에 따른 설정 방법들이 잘 가이드 되어 있으니 참고하시면 됩니다. var session = require('express-session');var passport = require('passport')var LocalStrategy = require('passport-local').Strategy; 모듈 선언 app.use(session({ // session 미들웨어 secret: '1234DSFs@adf1234!@..
앞서 md5, sha256을 이용한 비밀번호 보안 실습에 이어서 pbkdf2-password 모듈을 이용한 실습을 진행하겠습니다. * PBKDF2란 무엇인가? PBKDF2(Password-Based Key Derivation Function2) 암호 반복횟수, 암호기반 키 유도함수2.. 암호화 된 키의 무차별 대입 공격에 대한 취약성을 줄이기 위해 계산 비용이 많이 소요되는 주요 파생 함수이다. md5, sha256에 이어서 더욱 복잡하게 암호화 할 수 있는 기능을 가지고 있는 해시 함수라고 보시면 될 것 같습니다. 모듈 설치 모듈 테스트를 위한 node 실행 암호화된 해시 값 확인 function(err, pass, salt, hash)함수의 순서대로 해당 값 확인ex) null '111111' 'sa..
)nodejs의 모듈을 사용하여 비밀번호를 보안하는 방법에 대해서 알아보겠습니다. npm의 md5 모듈을 설치합니다. var md5 = require('md5'); 모듈을 다음과 같이 불러옵니다. app.post('/auth/login', function(req, res){ var uname = req.body.username; var pwd = req.body.password; for(var i=0; i md5('111'); password에 암호화 된 코드를 선언합니다. 각각의 다른 salt로 인하여 외부에서는 다르지만 내부적으로는 같은 비밀번호를 갖게 됩니다. 로그인과 로그아웃이 잘 이루어진 것을 확인할 수 있었습니다. 하지만 md5는 해커들에 의해서 취약점이 쉽게 노출될 수 있는 모듈입니다. ht..
- Total
- Today
- Yesterday