codestates / codestates/Touch

[Dev Log] 종화/11.09

Open
#99 0 comments 0 reactions 0 assignees View on GitHub
DevLog 힘내자! 아자아잣!!!
Dominant language
JavaScript
Stars
0
Forks
1
PR merge metrics
No merged PRs in 30d

Description

> ### 오늘은 어떻게 프로젝트에 기여했나요?
> 전체 게시글 목록 및 내가 쓴 게시글 목록에 대해서 데이터베이스에서 꺼내올 시 내림차순으로 변경해서 클라이언트로 보내주는 작업을 해봤습니다.
> 전체 게시글 목록 및 내가 쓴 게시글 목록 관련 날짜(createdAt)표기를 한국어로 표기하고 또 한국의 타임존(시간대)으로 표기해봤습니다.
>
> ### 오늘의 프로젝트에서 힘든 점은 무엇인가요?
> 내림차순으로 불러오는 방법은 크게 어렵지 않았습니다. sequelize manual 을 보고 아래와 같이 옵션을 줬더니 바로 해결되었습니다.
>
> ```js
> Posts.findAll({ order: [['id', 'DESC']] })
> ```
> 원래는 보통 내림차순으로 정렬할때의 기준이 id 가 아니라 createdAt 가 되는 경우가 많은데, 이 부분을 수정할때에 아직 날짜 표기 관련 수정을 하지 못했었던 때라 우선은 id 로 줬습니다. 이후 createdAt 으로 변경해도 문제 없이 잘 내림차순으로 정렬됩니다.
>
> 날짜 표기 관련 수정은 구글에 검색하느라 시간이 좀 많이 걸리긴 했지만 어떻게 보면 해결할 수 있었던 방법이 크게 어렵거나 복잡하진 않았던 것 같습니다.
> 우선 날짜 형식이 예를 들어 "2020-10-05T09:00:00.000Z" 이런 형식이라면 아래와 같이 날짜에 적용을 해서 "2020. 10. 5. 오후 6:00:00" 형식으로 변경할 수 있었습니다.
>
> ```js
> let time = "2020-10-05T09:00:00.000Z";
> let newTime = time.toLocaleString("ko-KR", {timeZone: "Asia/Seoul"});
> ```
> 문제는 어떻게 많은 게시글들에 들어있는 createdAt 과 updatedAt 을 위 표기한 형식으로 바꿔주느냐 였는데,
> 다행히도 mdn 에 있는 map 함수 사용법에 자세히 방법이 적혀 있어서 아래와 같이 적용했더니 해결되었습니다.
> (게시글들의 데이터는 배열 안에 객체 형식으로 들어가 있다.)
>
> ```js
> const data = [{
> id: 1,
> title: "제목1",
> content: "본문1",
> user_nickname: "작성자명1",
> createdAt: "게시글 작성된 시간1",
> updatedAt: "게시글 수정된 시간1"
> },
> {
> id: 2,
> title: "제목2",
> content: "본문2",
> user_nickname: "작성자명2",
> createdAt: "게시글 작성된 시간2",
> updatedAt: "게시글 수정된 시간2"
> },
> {
> id: 3,
> title: "제목3",
> content: "본문3",
> user_nickname: "작성자명3",
> createdAt: "게시글 작성된 시간3",
> updatedAt: "게시글 수정된 시간3"
> }]
>
> const newData = data.map((el) => {
> let newObj = {};
> newObj.id = el.id;
> newObj.title = el.title;
> newObj.user_nickname = el.user_nickname;
> newObj.createdAt = el.createdAt.toLocaleString("ko-KR", {timeZone: "Asia/Seoul"});
> newObj.updatedAt = el.updatedAt.toLocaleString("ko-KR", {timeZone: "Asia/Seoul"});
> return newObj;
> })
> ```
>
> 위 방법처럼 map 함수를 사용해 createdAt 과 updatedAt 의 값을 변경한 후 새로운 객체를 리턴해주니 다행히도 바로 문제가 해결될 수 있었습니다.
>
> ### 내일은 프로젝트에 기여하기 위해 무엇을 해야 하나요?
> * [ ] 배포 관련 작업 (w/ 동우님)
>
> ----------
> [내림차순으로 데이터 불러오기 참고 링크](https://sequelize.org/master/manual/model-querying-basics.html#ordering)
> [타임존을 한국식으로 변경하고 한국어로 날짜 및 시간 표기하기 참고 링크](https://velog.io/@taelee/mysql%EC%97%90%EC%84%9C-9%EC%8B%9C%EA%B0%84-%EC%B0%A8%EC%9D%B4%EB%82%A0%EB%95%8CGCP)
> [mdn의 map 함수 사용법 참고 링크](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/map)

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.