npm install sequelize sequelize-cli mysql2
sequelize
: 시퀄라이즈 패키지sequelize-cli
: 시퀄라이즈 명령어 실행mysql2
: mysql과 시퀄라이즈 연결하는 드라이버npx sequelize init
npx sequelize init
명령어 호출하면 새로운 폴더가 생성됨Sequelize.define(param1, param2, param3);
// param1 : 모델(테이블) 이름 설정
// param2 : 컬럼 정의
// param3 : 모델 옵션 정의
sequelize.define()
첫 번째 인자 : 모델이름 설정const model = Sequelize.define(
//모델 정의 -> sequelize 객체의 define 함수를 사용
`visitor`, // 인자 1 : 모델 이름 설정
{...
}, // 인자 2 :컬럼 정의
{...
} // 인자 3 : 모델의 옵션 정의
);
sequelize.define()
두 번째 인자 : 컬럼 정의이름 | 속성 |
---|---|
type | 데이터 타입을 정의(문자, 숫자, 날짜 등등) |
primaryKey | 기본키 설정(default : false) |
autoIncrement | 숫자 자동 증가(default : false) |
allowNull | NOT NULL 허용 여부(default : true) |
comment | column에 대한 설명을 작성한다. |
validate | 데이터유효성 검사하는 속성 |
sequelize.define()
세 번째 인자 : 모델 옵션 정의이름 | 속성 |
---|---|
charset | utf-8 |
collate | utf-8_general_ci |
tableName | 테이블 이름 설정 |
freezeTableName | true로 설정하면 이름을 복수로 설정하지 않는다. |
timestamps | 기본적인 설정을 true로 설정 |
예시)
const model = sequelize.define(
'visitor',
{
id :{
type: DataTypes.INTEGER,
allowNull : false,
primaryKey : true,
autoIncrement: true
},
name :{
type : DataTypes.STRING(10),
allowNull : false,
},
comment:{
type : DataTypes.TEXT('medium'),
}
},
{
tableName : 'visitor', //테이블 이름 설정
freezeTableName : true, //테이블 이름에 복수형x
timestamps: false, //기본적인 설정 true로 설정
}
);
findAll()
(SELECT
) : findAll
은 쿼리 결과를 배열 객체로 반환findOne()
(SELECT
): findOne
은 쿼리 결과를 객체로 반환create()
(INSERT
)UPDATE()
(UPDATE
)DESTROY()
(DELETE
)attributes
,where
: attributes
옵션을 사용하여 원하는 칼럼만 가져올 수도 있다. 또한, where
옵션으로 조건들을 나열할 수도 있다.where
옵션은 기본적으로 AND 옵션과 같다.
자주 쓰이는 Op객체
Op.gt | 초과 |
---|---|
Op.gte | 이상 |
Op.lt | 미만 |
Op.lte | 이하 |
Op.ne | 같지 않음 |
Op.or | 또는 |
Op.in | 배열 요소 중 하나 |
Op.notIn | 배열 요소와 모두 다름 |
const user = User.findAll({
attributes:['name','age'],
where:{
married:true,
age:{[Op.gt]:30}, //age가 30 초과일 때
},
});
force:false
= 테이블이 없으면 만들고 있으면 안 만든다.
force:true
= 테이블 무조건 생성, 테이블이 있어도 지우고 생성함
참고로 default
값은 force:false
임
테이블
생성해줫음
콘솔찍어보면 실제로는 datavalue
의 객체만 온다.
send
로 뭐가 오는지 확인
객체로 날라오는거 확인
테이블이름 : (hahaha
)
옵션 설정 따로 안해줘서 (freezeTableName : true
)
복수인 hahahas
가 나왓음