인증서버가 전해준 유저정보ID가 users테이블의 social_id컬럼에 저장될 것!
jwt생성 ( 페이로드{ sub : social_id }, 시크릿키 ) => accessToken
ex) 클: 상품 정보 등록 요청
클라이언트가 accessToken과 상품정보를 전달하면
서버는 routes레이어 - accessToken을 검증하는 미들웨어 필요!
상점 정보 조회 시,
-> accessToken으로 불러온 users.id와 req.params = :userId 가
일치하면 res.body = { isMyShop : true }
불일치하면 res.body = { isMyShop : false }
스펠링 수정 요청: contenets -> contents
ALTER TABLE reviews CHANGE contenets contents varchar(500) DEFAULT NULL;
상점 정보 불러올 때 필요한 것:
깃 PR: https://github.com/wecode-bootcamp-korea/39-2nd-VVolt-Market-backend/pull/4
깃 PR: https://github.com/wecode-bootcamp-korea/39-2nd-VVolt-Market-backend/pull/5
깃 PR: https://github.com/wecode-bootcamp-korea/39-2nd-VVolt-Market-backend/pull/6
깃 PR: https://github.com/wecode-bootcamp-korea/39-2nd-VVolt-Market-backend/pull/7
어려운 점 : join을 사용해서 1번의 select, 1번의 WHERE문으로 구현해보려고 했으나 마땅한 방법이 떠오르지 않아 조금 무식하게 서브쿼리를 연달아 작성해서 구현했다. 답은 나왔는데 이렇게 해도 괜찮은 건지 싶다.
o.order_status_id = 2
는 table에 id=2, name='판매완료' 일 때만 사용가능하므로 DB에 넣을 데이터를 통일할 때 주의할 부분! SELECT
u.id as sellerId,
u.nickname as sellerName,
u.user_image as sellerImg,
u.description as sellerIntro,
u.created_at as sellerOpenDay,
(SELECT AVG(r.rating)
FROM products p
INNER JOIN reviews r ON p.id = r.product_id
WHERE p.user_id = ?) as starAVG,
(SELECT COUNT(r.id)
FROM products p
INNER JOIN reviews r ON p.id = r.product_id
WHERE p.user_id = ?) as reviewNum,
(SELECT COUNT(*)
FROM users u
INNER JOIN products p ON u.id = p.user_id
WHERE u.id = ?) as onSaleNum,
(SELECT COUNT(*)
FROM users u
INNER JOIN products p ON u.id = p.user_id
INNER JOIN orders o ON o.product_id = p.id
WHERE u.id = ? AND o.order_status_id = 2) as soldOutNum,
(SELECT COUNT(*)
FROM users u
INNER JOIN likes l ON l.user_id = u.id
WHERE u.id = ?) as likeNum,
(SELECT COUNT(*)
from follow
WHERE follower = ?) as followingNum,
(SELECT COUNT(*)
from follow
WHERE followee = ?) as followNum
FROM users u
WHERE u.id = ?;
`
,[ userId, userId, userId, userId, userId, userId, userId, userId, ]