항해 99

항해 99 59일차 11/16일

코딩이좋아요 2022. 11. 17. 01:42
import Weather from '../models/weather'; //방금 만들어준 Weather
import Camp from '../models/camp';
import User from '../models/user';
import Pick from '../models/pick';
import Review from '../models/review';
import Trip from '../models/trip';

/*table 리스트르르 받아서 배열로 저장
 referenced by a foreign key constrain 에러로 인한 drop create 테이블 리스트분리
*/
const dropTable = [Review, Trip, Pick, Camp, User, Weather];
const createTable = [Camp, User, Review, Trip, Pick, Weather];
console.log(`======Drop & Create Table======`);
//배열을 반복문을 돌려서 넣어줌
async function migrate() {
  for (let i = 0; i < dropTable.length; i++) {
    await dropTable[i]
      .drop()
      .then(() => {
        console.log(`✅Success drop ${dropTable[i]} Table`);
      })
      .catch((err) => {
        console.log(`❗️Error in drop ${dropTable[i]} Table : `, err);
      });
  }
  for (let i = 0; i < createTable.length; i++) {
    await createTable[i]
      //sync <=데이터베이스 연동와 자동 연동하기
      .sync({ force: false }) //true : 삭제후 migrate , false : 삭제 안하고 migrate
      .then(() => {
        console.log(`✅Success Create ${createTable[i]} Table`);
      })
      .catch((err) => {
        console.log(`❗️Error in Create ${createTable[i]} Table : `, err);
      });
  }
}

(async () => {
  await migrate();
})();

어제 테이블을 다 작성하고 오늘 마이그레이션 했는데  마이그레이션이 잘 안되었다. 이유가 뭐였냐면 어제 했던거 처럼 

참조 해야하는 모델에 hasMany, belongsTo를 사용해서 참조하는 테이블을 먼저 삭제하고 부모테이블을 삭제해야 진행이 되었다. 그래서 밑에있는 테이블을 만드는 함수를 force를 false로 바꾸고 테이블을 지우는 함수를 찾아 반복문을 따로 돌리기로 했다.  마이그레이션 하는 순서랑 지우는 순서는 반대여야 해서 배열을 하나더 만들었다.  테이블을 다 삭제 하고 만들어야 에러가 나지 않아서 분리를 시켰다.