팀원이 잡아준 react 템플릿에 사용자 랭킹을 집어넣어보기로 했다
먼저 가짜 데이터를 mysql에 만들어서 저장했다
1
2
3
4
5
|
CREATE TABLE 'ranking' (
'id' int PRIMARY KEY,
'score' int,
'created_at' datetime
);
|
cs |
아주 간단한 테이블!!
원래는 문제도 디비에 저장하기로했는데 바뀌는 데이터도 아니고 사진 처리가 까다로울 것 같아 문제는 프론트에서 처리하기로 해서 결국 디비에 저장할 것은 사용자들의 점수밖에 남지 않았다
node에서 get method는 이렇게 구현했다
이전에 작성했던 problem의 함수를 고치고 query를 조금 더 복잡하게 바꾼 것 밖에 바뀐게 없다
해당 날짜에 만들어진 데이터만 가져오고 싶은데 어떤 방법이 가장 효율적일지 모르겠다
일단 where 절에서 그냥 단순히 date_format을 비교만했는데 더 효율적인 방법이 있을까..?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
var express = require('express');
var router = express.Router();
var db = require('./db');
/* GET ranks of today*/
router.get('/', function(req, res) {
query = `select *
from ranking
where date_format(created_at,'%Y-%m-%d') = date_format(NOW(), '%Y-%m-%d')
order by score desc
limit 10;`;
db.query(query, function (err, results, fields) {
if(err) {
console.log(err);
}
console.log(results);
res.send(results);
});
});
module.exports = router;
|
cs |
react에서 등수를 나타내는 부분은 아래와 같이 사용했다
1
2
3
4
5
6
7
8
9
10
|
import axios from 'axios';
const API = axios.create({
baseURL: 'http://localhost:3000/',
headers: {
"Content-Type": "application/json",
}
});
export default API;
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
import React from 'react';
import API from '../../api';
export default class PersonList extends React.Component {
state = {
ranks: []
}
componentDidMount() {
API.get('ranks')
.then(res => {
const ranks = res.data;
this.setState({ ranks });
})
}
render() {
return (
<ul>
{
this.state.ranks
.map((rank, index)=>
<li key={rank.id}>ranking : {index+1} id : {rank.id} score: {rank.score}</li>
)
}
</ul>
)
}
}
|
cs |
https://www.digitalocean.com/community/tutorials/react-axios-react
이 링크를 보고 참조했는데 react에서 axios를 사용할 때 보기 아주 좋은 글인 것 같다
이렇게 하면 아직은 완전 별로인 등수가 나온다...
팀원이랑 상의해서 예쁘게 고쳐야지ㅎㅎ
검색으로 (rank, index)를 이용해서 react에서 array가 있을 때 index를 가져오는 방법이 있는 걸 알 수 있었다
자바스크립트 문법이 아직 익숙지않다ㅠㅠ
'사이드 프로젝트' 카테고리의 다른 글
트렌드 테스트 프로젝트 - 4. sequelize 활용하여 데이터 다루기 (3) | 2022.03.19 |
---|---|
트렌트 테스트 프로젝트 - 2. express 시작 및 mysql 연결 (0) | 2022.02.17 |
트렌트 테스트 프로젝트 - 1. aws 인스턴스 생성 및 사용자 추가 (0) | 2022.02.17 |