Node JS express
,MongoDB
,Ajax
,JWT
그리고bcrypt
를 사용해 회원가입 및 토큰을 사용한 로그인 유지를 구현했다.
mongoose
모듈을 이용해 MongoDB에 연결을 할 수 있다.
시작하기 전에 우선 https://www.mongodb.com 에 들어가 회원가입및cluster
를 생성해 주도록 한다. 혹시 이번 튜토리얼이 끝나도 연결에 성공하지 못하면 사이트 왼쪽 메뉴에서Network Access
에 들어가edit
을 누르고 현재 IP주소나 전체 IP접근 허용을 확인하자.
다음은
.env
파일을 생성할 것이다. 이 파일에 들어가는 내용은MongoDB
를 사용하려면 로그인 정보가 필요한데 민감한 정보를 따로 보관하려는 목적이다.GitHub
에도 실수로 개인정보나 민감한 정보가 올라가지 않게 방지할 수 있다.
MongoDB
사이트에서 회원가입을 한 후[ID]
부분과[Password]
부분을 본인의 아이디와 비밀번호로 대체해 준다.[]
괄호도 없애준후 아이디를 넣어주어야 한다. 아래 텍스트에 본인의 정보를 넣어주면 된다.
SECRET_KEY
는 이번 내용과 관련이 없으니 무시해도 됩니다.
MONGO_URI = mongodb+srv://[ID]:[Password]@cluster0.cefr7.mongodb.net/userDB?retryWrites=true&w=majority
터미널에서 아래 커맨드에 본인의 정보를 넣은 후 실행해 주면
.env
파일 작업이 완료된다.본인의 아이디와 비밀번호로 대체한 후
""
쌍따옴표로 감싸주었다.
touch .env
echo >> .env ".env MONGO_URI = mongodb+srv://[ID]:[Password]@cluster0.cefr7.mongodb.net/userDB?retryWrites=true&w=majority"
.env
파일을 다 만들었다면터미널
에서npm
으로mongoose
를 설치해준다.
npm install mongoose
사전작업이 끝났다면
db.js
파일을 아래와 같이 만들어준다.
db.js
파일처럼 따로 만들어 모듈화한 파일들은 디렉토리를 따로 만들어 한곳에 모아주었다.
아래 코드의const path = require('path');
와require('dotenv').config({ path: path.resolve(__dirname, '../.env') });
는.env
파일의 경로설정을 위해 필요하다. 만약 본인이 다른 경로를 원한다면 경로설정을 확실히 해주도록 한다.
아래의
process.env.MONGO_URI
변수가 방금.env
파일에 넣어둔MONGO_URI
변수다.
이런식으로.env
파일을 따로 관리하면 민감한 정보를 관리하기 더 편하다.
//db.js
const mongoose = require('mongoose');
const path = require('path');
// calling enviroment variable from .env file
require('dotenv').config({ path: path.resolve(__dirname, '../.env') });
exports.db = () => {
mongoose.connect(
process.env.MONGO_URI,
{
// useNewUrlPaser: true,
// useUnifiedTofology: true,
// useCreateIndex: true,
// useFindAndModify: false,
}
)
.then(() => console.log('MongoDB conected...'))
.catch((err) => {
console.log(err);
});
}
위의
db.js
를 다 만들었다면server.js
파일에 아래의 코드를 추가해주고 저장해주면mongoose
를 활용한MongoDB
연결이 완성된다.참고로 저는
module
폴더를 하나 만들어db.js
파일을 따로 보관했기 때문에./module/db
경로를 사용합니다.
const { db } = require('./module/db');
db();
추가해주고 저장해주면 아래와 같이 서버가 시작됨과 동시에
MongoDB
에 연결되면 연결확인 문구가 출력됨을 확인할 수 있다.