테이블이 없는데도 업데이트 이미 되있다고 마이그레이션이 안될 때가 있다.

 

sequelize는 SequelizeMeta라는 테이블을 만들어서 migration 상태를 저장한다.

undo할 때 여기 저장된 migration 정보를 읽어서 down을 실행시키는 것 같다.

select * from "SequelizeMeta";

하고 있으면

drop table "SequelizeMeta";

 

migration정보를 db에 업뎃 시키는 것이 바람직한지는 생각해볼 문제다.

실제 db migration이 꼭 sequelize로만 실행된다는 보장은 없다.

SequelizeMeta를 자연스럽게 확인하도록 만들면 모르겠다.

  1. knk812 2020.11.19 23:40

    도움되는 내용 매우 잘 배우고 가용~

sequelize로 findAll 해서 얻은 객체는 순수한 DB 자료구조가 아니다

여러 함수화 여러 상태가 복합적으로 얽혀있다.

이걸 다 쓰냐고 말한다면 거의 그렇지 않다

1. sequelize 객체 - 옵션 없이 그냥 find로 나온 객체

2. find option에서  raw: true를 주었을 경우

3. get() 메서드로 얻는 방법

4. toJSON()으로 얻는 법

5. dataValues로 얻는 법

 

뭔가 통일을 해야 할 것 같은데 가장 범용적인 방법이 뭔지 혼란 스럽다.

 

시퀄라이즈에서는 outer join 한 테이블 컬럼을 join된 결과에서 where 구문으로 불러오려고 할 때

그냥 join한 테이블 이름 또는 alias로 찾을 수가 없다.

이 경우 '$nested.column$' 문법으로 볼러 올 수 있다.


eg.) where: { $UserDetail.address$: { [Op.like]: '%영등포%' } }


어쩌다가 이렇게 불편하게 됐는지 언제한번 들여다 보아야 겠다.




const TRANSACTION_NAMESPACE = "sequelize-transaction";

const cls = require("continuation-local-storage"),
    namespace = cls.createNamespace(TRANSACTION_NAMESPACE);

SequelizeOrigin.useCLS(namespace);

export const ns = namespace;

export const sequelize = new Sequelize({
    host,
    database,
    dialect: "mysql",
    username,
    password,
    modelPaths: [
        path.resolve(__dirname, "..", "model/**/*.repository{.ts,.js}"),
    ],
    logging: !profile.isProduction && false,
    modelMatch: (filename: string, member: string) => {
        if (filename === member) {
            return true;
        }

        const removeRepository = filename.split(".")[0];
        return removeRepository === member;
    },
});

export const transactionManager: TransactionManager = {
    transaction<T>(fn, options = {propagation: "REQUIRED"}) {
        if (options.propagation !== "REQUIRED") {
            return sequelize.transaction(() => fn());
        }

        const tx = cls.getNamespace(TRANSACTION_NAMESPACE).get("transaction");
        return tx ? fn() : sequelize.transaction(() => fn());
    },
};


+ Recent posts