반응형
공공데이터에서 코로나 감염 데이터를 가져와 로컬 데이터베이스에 저장하였다.
그럼 다음은 우리가 해야할 일은 Vue3 + Node.js 연동이다.
Vue3 + Nodejs 데이터 요청
Vue3에서 요청하는 데이터 셋은 하나가 아니고, 두 가지 데이터를 가져와야 한다.
1. 최근(어제) 코로나 감염 전국 시도별 데이터
2. 어제부터 10일전 트랜드를 보여줄 수 있는 데이터
따라서 Vue3 페이지가 시작될때 두번의 요청이 Nodejs로 전달되어야 한다.
두개의 데이터 셋은 아래의 그림과 같이 사용된다.
Vue3 에서 요청 후 응답 받은 데이터는 아래와 같다.
이제 요청한 데이터가 제대로 전달되었다는 것을 확인하였다.
Nodejs에 작성한 코드는 다음과 같다.
router.get('/covidarea/:id', (req,res)=>{
let mydb = new Mydb(pool);
let aid = req.params.id;
let d = new Date();
var tmpDay = d.getDate();
d.setDate(tmpDay - 10);
let year = d.getFullYear();
let month = ('0' + ( d.getMonth() +1)).slice(-2);
let date = ('0'+ d.getDate()).slice(-2);
strDate = year + month + date;
const strsql = "select stdDay, defcnt, deathCnt from covid_reals where stdDay >= '" + strDate + "' and gubun ='" + aid + "'";
console.log(strsql);
mydb.execute(conn =>{
conn.query(strsql, (err, ret)=>{
console.log(ret);
res.json(ret);
});
})
});
router.get('/covidinfo', (req,res)=>{
let mydb = new Mydb(pool);
let today = new Date();
let year = today.getFullYear();
let month = ('0' + (today.getMonth() +1)).slice(-2);
let date = ('0'+ today.getDate()).slice(-2);
strDate = year + month + date;
const strsql = "select * from covid_reals where stdDay = (select date_format(curtime, '%Y%m%d') from getstate where tbname = 'covid_reals') and gubun != '검역' ;" ;
console.log(strsql);
mydb.execute(conn =>{
conn.query(strsql, (err, ret)=>{
console.log(ret);
res.json(ret);
});
})
});
이 코드 /covidinfo 에서
stdDay = (select date_format(curtime, '%Y%m%d') from getstate where tbname = 'covid_reals')
쿼리를 하였다.
이유는 수집된 데이터 정보를 관리하는 테이블을 두었기 때문에
getstate 테이블의 최종 날짜를 가져오기 위함이다.
이 테이블은 데이터 수집 상태를 확인하기 위해 사용하였고, 꼭 이래야만 하는 것은 아니다.
그 covid_reals 테이블의 마지막 날짜를 가져와도 무방할 것이다.
언제나 말했듯 최적화된 코드는 아니기에 필요한 사람은 알아서 고쳐쓰면 된다.
다음은 Vue3에서의 데이터 처리에 관하여 살펴보기로 한다.
반응형
'dev' 카테고리의 다른 글
vue3 + three.js shadows 예제 코드 (0) | 2023.05.09 |
---|---|
18. Vue3 + D3.js 코로나 감염 공공데이터 예제 코드 최종 (0) | 2023.05.05 |
16. Vue3 + D3.js 코로나 감염 지도 python 3으로 공공데이터 가져오기 (1) | 2023.04.19 |
15. Vue3 + D3.js 코로나 감염 지도 및 Chart.js 막대 그래프 만들기 준비 (0) | 2023.04.19 |
14. 파이썬으로 공공데이터 날씨 데이터 가져오기 예제 (0) | 2023.04.19 |