[Front-end]

  • 사물함 사용 종료 버튼을 누르면,
    1. 사용종료 시간을 변수에 저장
    2. 결제 페이지로 넘기기
    3. 결제요청(외부)
    4. 응답받기 : 결제관련데이터
  • 사용종료 시간과 결제관련데이터를 백엔드에 전송?

[Back-end] <- 내가 구현해야할 부분

  • 사물함 사용종료 API 구현
    • 권한 : 관리자 ( 데이터 모델의 상태를 수정해야하므로)
    • 사용 종료 시간과, 결제 관련 데이터를 요청
      • 요청한 데이터 검증 -> 결제결과에 따라 사물함 상태 업데이트
        • 결제 완료 -> 사물함을 비어있는 상태로 기록
        • 결제 실패? -> 사물함은 여전히 사용중

(처음) 게시물 검색 결과를 보여줄때 생각한 정렬 방식
1. 최신에 게시된 게시물 순서대로 정렬
2. 만약에 완전히 같은 시간에 게시된 게시물을  PK id 값을 이용하여 정렬

 

하지만!!

 

Auto-increment 설정으로 값이 메겨진 pk id 를 이용하여 정렬을 하는 것을 선호하지는 않는다

(이유)

  1. PK 값은 기록된 데이터를 고유하게 식별하고 편리하게 찾기위한 값이다.
  2. 항상 순차적으로 증가를 안할 수도 있다.
  3. 다양한 요인에 의해 영향을 받는다 - 대표적으로 삭제 기능
  4. 숫자가 아닌 문자로 저장이 되기 때문에 쉽지 않다.
  5. 복잡한 쿼리나 대용량 데이터를 처리할 때 잘못된 정렬을 할 수 있다.

 

 

에러 발생

  • 이메일 주소를 입력하는데 입력이 안되는 상황
    • 입력 : testpass@email.com
    • curl -X 'GET' \ 'http://localhost:3000/posts/user-email/{email} \ -H 'accept: application/json'
    • 이유
      • swagger 작성시 name에 email 이 아닌 다른 단어를 입력하여서 입력된 이메일 주소를 인식 못함
        • name : user-email -> name: email
  • 결과에는 문제는 없지만 이메일 주소를 입력하였는데 @ 가 다르게 변경되어서 입력되는 상황
    • 입력 : testpass@email.com
    • curl -X 'GET' \ 'http://localhost:3000/posts/user-email/testpass%40email.com' \ -H 'accept: application/json'
    • 이유
      • 자동으로 컴파일을 하는 기능이 있는 듯 하다.
      • 콘솔에서 읽을 때는 문제가 없이 @ 을 인식

 

 

null

  • 위의 그림 처럼 DB 에 null 부분을 표현 하고자 nullable: true 를 했지만 원하는 형태로 표현이 안됨
    • startDate  부분에 null 을 입력해 주는 걸 기대 -> date-time 형식으로 출력
    • 해결
      • startDate 등 에 대한 값 설정에서 "example : null" 을 추가하면 null 로 표시 가능
      • 하지만 값이 있어야 하는 경우에는 example 을 삭제하고 date-time 형식으로 나오게 할 것

 

 

Locker  상태 종류

  • 사용중(occupied)
  • 비어있음(unoccupied)
  • 점검중(under maintenance)
  • 내 보관함(my locker)

상태별 상황

  • 사용중(occupied) 
    • 유저가 locker 사용을 시작
    • 이미 다른 유저가 사용중
  • 비어있음(unoccupied)
    • 유저가 locker의 사용을 끝내고 정산도 완료
    • 초기 디폴트 값
  • 점검중(under maintenance)
    • 새로운 api
    • 관리지 권한이 필요
  • 내 보관함(my locker) -> 함수를 만들어서 구현
    • 유저가 한 역에서 locker를 빌리기 전에 두가지 조건을 확인하여 만족하면 표시
      1. 사용 중인 locker
      2. 그 중 유저의 아이디와 일치

 

Station 라우터에서 API별로 추가 해야할 사항들

router.get('/:id', ...) // 선택한 역에 대한 정보 검색
  • 유저확인
  • 유저가 사용하고 있는 사물함 있으면 '내 보관함(my locker)' 으로 변경하여 응답

 

locker 라우터에서 API별로 추가 해야할 사항들

router.get('/', ...) // 모든 사물함 검색
  • 없음
router.get('/:id', ... )
  • 없음
router.patch('/use', ....) // 사용자가 이미 역을 선택했고, 사용할 사물함을 고른다.
  • 유저 확인
  • 사물함 선택시 사용 중으로  상태 변경 전환
  • 이미 유저가 사용중인 사물함을 선택하면 예외처리
router.patch('/reset',...) //사용 완료 후 정산이 되었는지 확인
  • 정산이 완료되면 비어있음으로 전환
  • 유저확인
router.patch('/maintain/:id', ...) //router.get('/:id', ...)를 변경
  • 여기서 점검중 상태로 변환
  • 관리자 권한 확인 필요

목적

  • 역의 온도와 습도를 실시간으로 제공

방법

  • openweather api 사용
  • api key 는 .env에 저장
  • 온도와 습도를 db에 저장 X
  • 특정 역을 검색할 때 api를 이용하여 검색 하여 제공

결과

  • 참고자료를 보고 구현한 결과 작동
    • 좌표는 정확하지만, OpenWeatherMap 에서 받은 동네 이름은 다른 이슈
      • 신논현역 좌표 입력 -> 동네 이름은 잠원동이라고 받음

 

참고자료

https://openweathermap.org/current

 

Current weather data - OpenWeatherMap

 

openweathermap.org

https://medium.com/javarevisited/fetching-weather-data-with-node-js-and-express-a-beginners-guide-9420e4cc2f8b

 

Fetching Weather Data with Node.js and Express: A Beginner’s Guide

A Simple Walk-through to the process of featching API data with Express and Node

medium.com

https://www.npmjs.com/package//node-fetch

 

node-fetch

A light-weight module that brings Fetch API to node.js. Latest version: 3.3.2, last published: 5 months ago. Start using node-fetch in your project by running `npm i node-fetch`. There are 33560 other projects in the npm registry using node-fetch.

www.npmjs.com

https://www.npmjs.com/package/openweather-apis?activeTab=code

 

openweather-apis

Simple APIs to use with OpenWeatherMap.org free servicies, request a APPID on http://openweathermap.org/appid and start!. Latest version: 4.5.0, last published: 7 months ago. Start using openweather-apis in your project by running `npm i openweather-apis`.

www.npmjs.com

 

+ Recent posts