와! 또 빨리왔네요! 삘받아서 하핳... 열정 활활!
일단 한번 또 빠르게 시작해볼까요?
일단 MongoDB란?
JSON기반 NoSQL DB입니다!
*** 무료입니다. 와!
아래의 주소에서 설치 가능합니다.
https://www.mongodb.com/try/download/community
잉? 근데 NoSQL?
원래 의미는 Non SQL 또는 Non relational
간단히 말해 비관계형 데이터베이스입니다!!
SQL처럼 복잡하지 않고, SQL 계열 쿼리 언어를 사용할 수 있으며, 성능성과 확장성이 우수합니다!!
하지만 ACID 트랜잭션 ( 원자성 / 일관성 / 고립성 / 영구성 )을 생각하실 업무 ( 은행, 매우 중요한 업무 )
는 RDBMS를 쓰는 편이 좋습니다.
상황에 따라 DB를 선택하는 것이 좋겠죠?
이제 저희가 쓸 모듈은 Mongoose인데요 그 Mongoose란?
MongoDB 기반 ODM(Object Data Mapping) Node.js 전용 라이브러리로, Node.js에서 MongoDB를 사용하는 것을 도와줍니다!!!
와! 편-안!
사용
간단하게 회원가입 / 로그인 기능을 한 번 구현해보겠습니다!
npm install express body-parser mongoose
먼저 사용할 모듈을 설치합니다!
App.js
var express = require('express');
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var app = express();
const uri = 'mongodb://127.0.0.1:27017/user_db_name';
var db = mongoose.connect(uri, (err) => {
if (err) {
console.log(err.message);
} else {
console.log('Succesfully Connected!');
}
});
var UserSchema = new mongoose.Schema({
password: String, // 비밀번호
name: String, // 이름
id: String, // 아이디
});
var Users = mongoose.model('users', UserSchema);
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ limit: '1gb', extended: false }));
app.post('/signup', (req, res) => {
var new_user = new Users(req.body);
new_user.save((err) => {
if (err) return res.status(500).json({ message: '저장 실패!' });
else return res.status(200).json({ message: '저장 성공!', data: new_user });
});
});
app.post('/signin', (req, res) => {
Users.findOne({ id: req.body.id, password: req.body.password }, (err, user) => {
if (err) return res.status(500).json({ message: '에러!' });
else if (user) return res.status(200).json({ message: '유저 찾음!', data: user });
else return res.status(404).json({ message: '유저 없음!' });
});
});
app.listen(4000, () => console.log('Server On 4000'));
먼저 코드는 다음과 같습니다!
const uri = 'mongodb://127.0.0.1:27017/user_db_name';
var db = mongoose.connect(uri, (err) => {
if (err) {
console.log(err.message);
} else {
console.log('Succesfully Connected!');
}
});
Node.js 와 MongoDB를 연결해줍니다! "야 몽고디비! 넣을게~!"
user_db_name 에 사용하실 DB 이름을 넣으면 됩니다!
DB가 자동적으로 27017포트에 할당되기 때문에 27017 포트는 되도록 비워두시는게 좋습니다!
uri에 몽고디비 외부 접속 링크를 넣을 수도 있습니다!
var UserSchema = new mongoose.Schema({
password: String, // 비밀번호
name: String, // 이름
id: String, // 아이디
});
var Users = mongoose.model('users', UserSchema);
유저 스키마입니다! 와 유저!
스키마란 간단하게 데이터베이스의 구조로, 데이터베이스가 갖는 개체, 관계, 속성, 제약 등을 정의합니다.
password, name, id를 추가하고, String. 즉 문자열이라는 타입을 부여했습니다.
type말고도 unique, required등의 속성을 추가할 수 있습니다.
마지막 줄로 MongoDB의 콜렉션에 만들었던 UserSchema를 "users"로 추가하고!
model화 시켜 Users 로 접근 가능하게 만들었습니다!
콜렉션이란 스키마를 기준으로 작성된 데이터 문서의 모음이라고 보시면 됩니다!
app.post('/signup', (req, res) => {
var new_user = new Users(req.body);
new_user.save((err) => {
if (err) return res.status(500).json({ message: '저장 실패!' });
else return res.status(200).json({ message: '저장 성공!', data: new_user });
});
});
회원가입 부분입니다!
먼저 위에서 만든 Users 객체를 req.body ( 입력 값 ) 을 넣어 하나 선언합니다!
Users 객체의 save 메소드로 생성한 new_user를 저장합니다!
콜백 함수를 통해 에러 시 500, 아닐 시 200과 데이터를 반환합니다!
app.post('/signin', (req, res) => {
Users.findOne({ id: req.body.id, password: req.body.password }, (err, user) => {
if (err) return res.status(500).json({ message: '에러!' });
else if (user) return res.status(200).json({ message: '유저 찾음!', data: user });
else return res.status(404).json({ message: '유저 없음!' });
});
});
로그인 부분입니다!
findOne 메소드에 id, password가 입력 값과 매칭되는 쿼리를 사용하여 데이터를 찾습니다!
( find 메소드도 있습니다. find는 쿼리에 해당되는 모든 데이터를 반환하며, 배열입니다. )!
마찬가지로 콜백 함수를 통해 상태마다 요청에 대한 반환 값을 할당했습니다!
결과
유저 저장인 /signup 입니다! 저는 복싱을 좋아해서 빠아아알간 복싱 글러브를 닉네임으로 쓰겠습니다! ㅋㅋ
로그인입니다. 정상적으로 유저를 찾았네요!! 와! 로그인!
없는 데이터로 유저 찾기에 실패했습니다 ㅠㅠ...
이번 강의는 여기까지입니다. 와! 드디어 로그인! 회원가입! 다음에는 게시판 만들기 강의를 올릴테니 기대해주세요!
'JavaScript > Node.js Lecture' 카테고리의 다른 글
5. Node Promise (0) | 2020.11.16 |
---|---|
4. Node 동기/ 비동기 처리 ( async / await ) (0) | 2020.11.16 |
2. 동기와 비동기 알아보기! (0) | 2020.07.01 |
1-2. Express와 Body-Parser모듈을 사용해서 POST와 GET으로 Hello World 보내보기! (0) | 2019.10.12 |
1. Visual Code와 Node.js (NPM) 설치 (0) | 2019.10.12 |