캔들차트 그리기
- 라이브러리 존재함 시가, 종가, 저점, 고점 4가지만 입력하면 차트를 그려줌
❕❕ 시가, 종가, 저점, 고점 구하기 - 쿼리문
select * from transaction
- 오늘날 기준으로 최고로 높은 금액을 뽑으려면?
select max(price) from transaction where 날짜
(최고로 낮은 금액은 min 을 사용)
- 오늘을 기준으로 마지막에 거래된 내용을 뽑으려면?
날짜를 오름차순으로 정렬 -> 맨위에 있는게 시가, 맨 아래가 종가
select price from transaction order by reg_date asc limit 0,1
asc 오름차순
desc 내림차순
limit 0,1 맨 위에 하나만 보겠다
--------------------------
< join문 사용하기 >
*DB
- 정확한 명칭은 RDBS(관계형 데이터베이스 시스템)이다.
(많이 알려진 데이터베이스로는 마리아디비, 오라클 등이있음)
데이터가 서로 관계되어있고 이것을 테이블끼리 직접적으로 연결을 시켜줘야 함.
데이터끼리 연결을 시켜줄때는 foreign key를 사용함
테이블(데이터를 저장하는 단위), 필드(데이터 값) 들이 어떻게 연관되어있는지에 따라
1:N 이냐 N:N이냐 구분된다.
1:N 의 데이터
ex) 게시판 - 하나의 게시물에 여러개의 댓글을 달 수 있다.
게시판, 댓글 각각 고유값이 존재함.(=foreign key)
얘네 관계를 연결해주는게
1:N 타입
현재의 데이터 테이블에서는
user와 asset의 관계가 1:N이라고 할 수 있다. (한명의 유저가 여러개의 입출력이 가능하므로)
여기서는 userid 가 foreign key가 된다
🔹 index.js 코드 추가
Object.keys(db).forEach(modelName => {
if (db[modelName].associate) {
db[modelName].associate(db);
}
});
Object.keys(db) ➡ 해당객체의 속성값(value값)을 배열로 만들어서 리턴해주는 함수.
여기서 db(얘 객체임) ➡ 우리가 만들어놓은 테이블( user, transaction, assets)을 의미함.
결과값 : [ User, Assets, Transaction ]
forEach ➡ 이 배열을 반복해서 돌린다. ( 첫번째 돌릴때User , 두번째 Assets, 세번째... 나오겠지 )
db[modelName] ➡ db 안의 값을 가져오는것
.associate ➡ db[modelName] 안에 존재하는 매소드. 만약 얘가 존재한다면(true이면) 코드 실행, 아니면 실행x
(그래서 User 데이터 페이지에 보면 끝에 User.associate = (models)=>{} 어쩌구 만들어줘야 실행되는거..
없으면 실행 x)
🔹 assets.js 코드 추가
module.exports = (sequelize,DataTypes)=>{
const Assets = sequelize.define('assets',{
input:{
type:DataTypes.STRING(50),
allowNull:false,
},
output:{
type:DataTypes.STRING(255),
allowNull:false,
},
regDate:{
type:DataTypes.DATE,
allowNull:false,
}
},{
timestamps:false,
underscored:false,
paranoid:false,
modelName:'assets',
tableName:'assets',
charset:'utf8mb4',
collate:'utf8mb4_general_ci',
})
Assets.associate = (models)=>{
Assets.belongsTo(models.User,{
onDelete:'cascade',
foreignKey:{
allowNull:true,
}
})
}
return Assets
}
서버 실행 후, 테이블이 잘 들어왔는지 마리아디비에서 확인 ㄱㄱ
굿 🤘