웹/Nodejs

Sequelize에서 Boolean 칼럼을 ( ㅁ= 0 OR ㅁ IS NULL) 문으로 만들어보기

wonin 2022. 10. 31. 22:49

✅다중 조건(OR)

const { Op } = require("sequelize");
Post.findAll({
  where: {
    [Op.or]: [
      { authorId: 12 },
      { authorId: 13 }
    ]
  }
});
// SELECT * FROM post WHERE authorId = 12 OR authorId = 13;

Op.or로 다중 조건을 걸 수 있습니다.

약간 다른 구조로도 할 수 있습니다.

const { Op } = require("sequelize");
Post.destroy({
  where: {
    authorId: {
      [Op.or]: [12, 13]
    }
  }
});
// DELETE FROM post WHERE authorId = 12 OR authorId = 13;

필드별로 쪼개서 넣을 수도 있습니다.

✅ Boolean을 sequelize에서 확인하기

const testparam: testParams = {
  empty: ('false' as unknown) as boolean,
};
await testDao.selectList(testparam);

위와같은 형식으로 selectList를 보내보겠습니다.

그러면 'false'로 empty 필드에 들어갈 것입니다.

if (params.empty) {
      const realEmpty = params.empty as unknown;
      setQuery.where = {
        ...setQuery.where,
        empty: realEmpty === 'true' ? realEmpty : { [Op.or]: [false, { [Op.is]: null }] }, // '=' OR 'IS NULL'검색
      };
    }

boolean 형식이 문자열로 true인지 false인지를 판단하게 됩니다. if문으로 params의 empty가 있는지 없는지 확인하기 위해서 문자열 형태로 보냅니다.

✅ ( ㅁ= 0 OR ㅁ IS NULL) 문 만들기

 { [Op.or]: [false, { [Op.is]: null }] }, // '=' OR 'IS NULL'검색

Op.or를 사용해서 (empty = 0 OR empty IS NULL) 문을 만들어 줍니다.

출처

728x90