본문 바로가기

Sequelize6

[SEQUELIZE] create와 bulkCreate 현재 코드 여러곳에서 create / bulkCreate를 사용하고 있었습니다. 많은코드가 얽혀있는 상태에서 항상 특정 부분에서 문제가 생기는데 이때까지는 생각 못했지만... bulkCreate를 트랜잭션까지 연결해서 진행하다보니 시간이 계속 걸림에 따라 트랜잭션 오류가 발생했습니다. 생각을 해보니 많은 양의 데이터를 다루게 될때const arr = [];const transaction = await db.seqeulize.transaction();for(let i = 0 ; i  이런 식으로 보게되면 create는 하나하나 진행하기때문에 개별적으로 transaction을 잡고 순서대로 처리하기에 타임아웃에 덜 민감하지만, bulkCreate는 대량의 데이터를 한번에 묶어서 진행하기때문에 더 민감할 수 .. 2024. 11. 4.
[JS] Sequelize Association(관계) 설정 Sequelize에서 간단하게 관계 설정 하는 법을 적으려고 합니다. 기본적인 코드는 다음과 같습니다. // 모델 안에서 진행한다는 가정하에 진행합니다. table_name.model.js table_name.associate = (models) => { table_name.hasMany(models.other_table_name, { foreignKey : "fields", sourceKey : "fields", }); } other_table_name.model.js other_table_name.associate = (models) => { other_table_name.belongsTo(models.table_name, { foreignKey : "fields", targetKey : "field.. 2023. 11. 8.
[JS] sequelize findAndCountAll 의 활용성 보통 findAll 로 찾아와서 그것에 대한 length 를 구해가지고 총 개수 값을 찾는 경우가 있는데요 만약 findAll을 하는데 pagination 때문에 limit 가 걸려있으면 그 만큼의 개수를 가져올 수 밖에 없어서 limit가 최대 개수가 되는데 이때도, 총 개수를 가져오고 싶다면 findAndCounAll 을 쓰면 됩니다. const db = require('../../모델 위치'); const a = await db.table_name.findAndCountAll({limit: 50}); console.log(a.rows.length) // 가져온 개수 50 console.log(a.rows.count.length) // table 에 들어있는 총 개수 findAndCountAll 로 .. 2023. 10. 31.
[JS] sequelize raw query 적용 sequelize 설치 됐다는 가정 하에 진행 됩니다. sequelize를 이용하다가 sequelize로 하기에는 너무 힘든 쿼리거나 이미 짜여진 쿼리를 그대로 사용하고 싶을 경우 raw query를 그대로 사용해야하는데요. 이때 사용하는 방식입니다. const db = require('../../모델 위치'); exports.s = async (a, b) => { const query = `SELECT * FROM TABLE_NAME WHERE table_field_name between :a AND :B; return db.sequelize.query(query, { replacements: { a, b }, type: db.sequelize.QueryTypes.SELECT, raw: true, }).. 2023. 10. 29.
[JS] sequelize transaction 직접 걸기 sequelize 가 설치되었다는 가정하에 작성되었습니다. transaction을 직접 걸어두는게 아니면 DB 설정에 따라 자동적으로 잡힙니다. 보통은 Auto Commit 형태로 되어있습니다. 근데 Auto Commit이 아닌 직접 거는 상황을 보여드립니다. 일단 Transaction은 보통 수행하는 작업의 단위를 묶기 위해서 사용하죠. Transaction을 사용하게 됐을때 제가 느낀 장단점은 [장점] 1. 한번에 묶어서 수행하기 때문에 확인하기 편함 2. 서버나 타 이슈로 인해 에러 발생시 한꺼번에 롤백이 되기때문에 강제로 commit 될 위험 없음 3. 원하는 곳에서 commit 할 수 있도록 설정 가능 [단점] 1. transaction 적용하면서 속도가 조금 느려짐 -> 속도는 transact.. 2023. 10. 29.
[JS] sequelize op 사용 sequelize 설치가 되어있다는 가정 하에 제가 자주 쓰던 sequlize op 총 형태 모음집 입니다. const {Op} = require('sequelize'); const db = require('../../?'); // 모델있는 위치 const arr = [1,2,3,4,5]; // order를 형성하기 위한 배열 let offset = 0; if (page > 1) { offset = (page - 1) * limit; } const a = await db.table_name.findOne({ attributes: ['table_field_name', // 특정 필드명 db.sequelize.fn('사용할 sql 함수', db.sequelize.col('table_field_name'), .. 2023. 10. 26.