목차
1. 시퀄라이즈?
2. 사용법
1. 시퀄라이저?
- 자바스크립트를 사용하는 ORM
시퀄라이즈는 데이터베이스의 테이블과 객체 지향 프로그램의 객체를 매핑시켜주는 ORM 중 하나다. 객체 지향 프로그램이 대새인 현재 NodeJS를 사용하여 서버를 만드는데 express와 더불어 백앤드 한 축을 차지하고 있다.
3. 사용법
1 ) 시퀄라이즈 다운로드
시퀄라이즈는 외부 라이브러리로 패키지 매니저를 통해 다운 받아야 사용할 수 있다.
npm install sequelize
2 ) 시퀄라이즈 객체 생성하기
데이터베이스에 연결하기 위해서는 당연하게도 접속정보가 필요하고 그 정보를 시퀄라이즈 객체를 생성할 때 지정을 해주어야 한다.
const sequelize = new Sequelize(
[데이터베이스 이름],
[데이터베이스 접속 유저],
[데이터베이스 접속 패스워드],
[데이터베이스의 접속정보]
);
3 ) 객체와 테이블 연결하기
class 클래스명 extends Sequelize.Model{
static init(sequelize) {
super.init({
// 객체의 이름과 속성
속성1:{
속성의 타입과 옵션
}
},{
// 매핑할 테이블의 속성 내용
})
}
}
Users.init([시퀄라이즈객체]);
ex)
class User extends Sequelize.Model {
static init(sequelize) {
return super.init({
id: {
type: Sequelize.STRING(20),
unique: true
},
name: {
type: Sequelize.TEXT
},
age: {
type: Sequelize.INTEGER
}
}, {
sequelize: sequelize, // sequelize 키값으로 시퀄라이즈객체를 추가
timestamps: true, // 생성, 변경시간에 대한 컬럼 추가여부
underscored: false, // 스네이크 표기법을 카멜표기법으로 변경할지 여부
modelName: "Users", // join등에 사용되는 model 이름설정
tableName: "users",
paranoid: false, // 삭제된 속성의 시간을 남겨둘지 여부
charset: "utf8mb4", // 인코딩 방식
collate: "utf8mb4_general_ci" // 인코딩 방식
});
}
}
Users.init(sequelize);
해당 객체와 매핑되는 테이블이 없다면 새로 생성하는데 아래 쿼리와 같다.
create table user(
id int auto_increment unique,
name text,
age int,
)
여기까지 하면 매핑은 되었다. module.exports를 통해 외부로 내보내기를 하면 다른 파일에서 해당 객체를 통해 테이블의 데이터를 조작할 수 있다.
4) CRUD
데이터 조작을 하는 부분에 대해서는 모두 promise로 이루어져있어 then/catch 또는 async/await를 사용하여야 한다.
● 데이터 추가
await 모델객체.create({
속성1 : 데이터1
});
// ex)
await User.create({
id : 'user1'
});
● 데이터 조회
// 전체 조회
await 모델객체.findAll({
where : {
조건
}
});
// 특정 데이터 조회
await 모델객체.findOne({
where : {
조건
}
attributes : [속성1, 속성2]
});
// ex)
await User.findAll({
where : {
id : 'user1'
}
});
await User.findOne({
where : {
id : 'user1'
}
attributes : ['id','name']
});
● 데이터 변경
where이 없다고 에러가 발생하는 것은 아니지만 주어진 컬럼에 대한 모든 데이터가 변경되기에 유의해야 한다.
await 모델객체.update(
{
변경할 속성 : 새로 저장될 데이터
},
{
where : {
조건 속성 : 조건 값
}
});
// ex)
await User.update(
{
name : '홍길동'
},
{
where : {
id : 'user1'
}
});
● 데이터 삭제
where이 없다고 에러가 발생하는 것은 아니지만 주어진 컬럼에 대한 모든 데이터가 삭제되기에 유의해야 한다.
await 모델객체.destroy({
where : {
조건 속성 : 조건 값
}
});
// ex)
await User.destroy({
where : {
id : 'user1'
}
});
'NodeJS' 카테고리의 다른 글
웹소켓 (0) | 2024.06.30 |
---|---|
JWT로 권한 인증하기 (0) | 2024.06.23 |
내 비밀번호 나도 모르게 만드는 법 bcrypt (0) | 2024.06.22 |
cors (0) | 2024.06.21 |
form태그로 REST FUL 가능할까? (0) | 2024.06.15 |