
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가 나왓음