시퀄라이즈에서는 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