한 일

mysql로 만든 DB nosql(mongoDB)로 변경

회의

kick off meeting


회의

프로젝트 팀 내부에서 회의를 했다. 간략하게 solo week 동안 무엇을 공부했는지 서로 공유하고, 어떻게 맞춰볼지를 토의했다.

DB변경 제안이 나왔고, DB마다 장단점이 있어서 시도해보는 것도 좋을것 같고, 프로젝트와 소소하게 더 맞는 nosql로 변경했다.

그리고 android studio와 expo의 차이점도 얘기를 나누고, AWS에서 어떤식으로 적용할지도 토의 했다.


kick off meeting

우리가 어떠한 방식으로 진행할지와 앞으로 어떤식으로 하면 좋을지 엔지니어님과 얘기를 나누었다. 우선 시도해보는 것에 매우 큰 중점을 두고 방향성만 잃지 않으면 된다고 말씀하셨다.

  • git 을 잘 활용해서 팀과 프로젝트를 하는지,

  • TIL로 스스로 점검하는지

  • Agile Scrum 방식을 적용해보는지,

  • 팀회고를 1주일에 한번정도는 꼭 해야할 것!

  • 기술적인 고민은 같이 할 것,

  • merge하기 전에 코드를 리뷰하고 점검한 후에 할 것,

  • 토이문제에 너무 빠지지 말 것 등등

기본적인 것들만 유지하게끔 말씀해주셨다. 그리고 기대된다고 했다. ㅎ


DB 설치/변경

아침에 회의를 하고 DB를 nosql로 변경하였다. JSON형식의 데이터베이스였고, 관계형데이터베이스에서는 5개의 테이블로 구성된 것을 몽고DB로 변경하니 2개의 콜렉션으로 바뀌었다. 바꾸는 과정에서 새로이 공부를 했고, 익히는데 시간도 많이들었다. 그리고 설치하고 환경설정을 하는데 시간을 투자하였다.

brew를 이용해 한번에 설치하는것이 너무 쉽게 설치가 되어서 이상한 기분이였다. 이전에 windows에서는 DB설치할때 고생했는데…

설치후에 어떠한 환경을 설정해주는데 너무 어렵게 생각하고 꼬아서 생각해버리는 바람에 시간을 날려버렸다. 그리고 액세스 컨트롤 어쩌구 하는 오류가 떠서 계속 찾아보고 수정해보려 했지만 잘 되지 않았다. 나중에 꼭 수정을 해보아야겠다. 그 후 공부하고 mongoose도 이용해서 nodejs로 설정하고 회원가입과 로그인을 다시 만들었다. 코드는 무척이나 짧아졌다.

mongo DB 자료 괜찮음 https://brunch.co.kr/@kooslab/181


db : 현재 db확인

use <database> : 사용할 db 설정

SHOW dbs : db목록 확인

SHOW collections : collection 목록을 확인

db.dropDatabase() : 데이터베이스를 제거

db.createCollection(<name>,<options>) : collection을 생성

db.<collection>.insert({"<key>":"<value>"}) : 맞는 값을 넣기

db.<collection>.drop() : collection 을 제거

db.<collection>.remove({조건}) : 조건이 충족되는 것들만 제거


db.<collection>.find() : collection 안에 내용을 확인

  • 조회하는 조건들이 다양하다. 뒤에 .pretty() 를 붙히면 보기 편하게(예쁘게)바뀐다.

  • find({’’:’’})를 사용하면 조건에 맞게 선택된다.

  • find({"":{$lte:""}})를 사용하면 less than 을 의미하고 value 의 이하인것들만 선택한다.

$eq === value

$gt > value

$gte >= value

$lt < value

$lte <= value

$ne !== value

$in 배열안에 속하는 값

$nin 배열안에 속하지 않는 값

npm install mongoose

몽구스 orm

const mongoose = require('mongoose');
var db = mongoose.connection;
db.on('error', console.error);
db.once('open', function() {
  // CONNECTED TO MONGODB SERVER
  console.log('Connected to mongod server');
});

db에 연결하여 연결되었는지를 체크하는 부분

mongoose.connect('mongodb://127.0.0.1:27017/mongodb_tutorial', {
  useNewUrlParser: true
});

현재 나의 mongoDB의 /주소,포트번호/사용할 데이터베이스,{옵션?} 연결하는것이다.

var Schema = mongoose.Schema;

var userSchema = new Schema({
  name: String,
  email: String,
  password: String,
  phoneNumber: String,
  ordered: Array
});

새로운 스키마를 구성할 때의 쿼리이다.

'collection'.find({ key: value }, (err, data) => {
  if (err) err;
  console.log(data);
});

찾는 collection의 메소드로 find를 실행하고 찾는 조건을 첫번째 매개변수로, 두번째 매개변수로 callback을 받는다.

var user = new User();
user.name = req.body.name;
user.email = req.body.email;
user.password = password;
user.phoneNumber = req.body.phoneNumber;
user.ordered = req.body.ordered;
user.save(err => {
  if (err) console.error(err);
});

위에서 만든 스키마를 기준으로 new 연산자를 이용해 회원가입하는 새로운 사람의 정보를 담고 save메소드를 이용해 저장시킨다.

원래 내용이 더 있지만 지웠다. orm에 집중하기위해 지웠다.

const password = bcrypt.hash(req.body.password, 10, (err, hash) => {
  return hash;
});

마지막으로 해쉬함수인 bcrypt인데 salt를 몇번 돌릴지와 비밀번호를 담고 password라는 변수에 담았다.

처음 사용해봤지만 매우 쉬웠다.