codestates / ETON-server

0 stars 0 forks source link

[Task] db Sequelize 작업 - boards, tasks Table #33

Closed ddubbu closed 3 years ago

ddubbu commented 3 years ago

Task Card

Assignee: @aesopfrom0

Job Description

결과물

ddubbu commented 3 years ago

@aesopfrom0 님 제가 저번에 이해한 바로 도움을 드리자면, im-sprint-shotly-mvc 에서 1:N 구현해본 건데 1(users) : N(urls)

요점은, migration은 SQL 에 적용하기 위해, models 은 ORM( Object Relational Mapping) 적용을 위해 모두 변경해줘야한다는 점입니다. 첫번째 파일 : migration 파일 2~3번째 파일 : models 하위 파일 image

ddubbu commented 3 years ago

2월 9일 스키마 구조 확정 image

Wunhyeon commented 3 years ago

https://www.youtube.com/watch?v=Mdib18k7rug

Wunhyeon commented 3 years ago

모델에서 belongs to , hasmany등의 관계를 잘 설정해야 한다. model.findOne등의 쿼리를 날릴때 위의 association설정한 것들이 쿼리에 합쳐져서 날아간다. 예를들어 로그인을 하기위해 만들어진 쿼리 users .findOne({ where: { email, password, }, 만 하더라도 user model 에 this.belongsTo(models.boards,{ foreignKey : 'admin_userid' }) boards model에 this.hasOne(models.users)이렇게 설정되어 있다면 sequelize가 "SELECT id, username, password, email, picture, createdAt, updatedAt, boardId, admin_userid FROM users AS users WHERE users.email = '1@demo.com' AND users.password = 'password123@' LIMIT 1;" 이렇게 쿼리를 날린다. 이 문제를 model users에서

this.belongsTo(models.boards,{
        foreignKey : 'admin_userid'
      })
```js
를 없애고 
model boards에서 

this.hasOne(models.users,{ foreignKey : { name : 'id' } });


이렇게 수정해주었다.
ddubbu commented 3 years ago

join 하는 방법

image