DB,Prisma,ServerAction을 가지고 db에 저장되어 있는 데이터를 뿌려주는 페이지를 만들었다.
products
├── [id]/
│ ├── page.tsx
├── action.tsx
├── loading.tsx
└── page.tsx
components
├── product-list.tsx
├── product.tsx
lib
└── utills.ts
const getProduct = async() => {
const product = await db.product.findMany({
select:{
id:true,
created_at:true,
},
take:1,
orderBy:{
created_at:'desc'
}
})
return product
}
skip으로 앞에 받은 데이터가 있으면 그 데이터를 스킵하고,take옵션으로 한개의 데이터만 받도록 작업한다. skip:page * 1,
take:1,
include를 사용하여 추가적인 정보를 더 가져온다 (schema에 @relation 으로 되어 있는 정보)//시간을 x일전으로 만들어주는 함수
export function formatToTimeAgo(date:string):string{
const dayInMs = 1000 * 60 * 60 *24
const time = new Date(date).getTime()
const now = new Date().getTime()
const diff = Math.round((time - now) / dayInMs)
const formatter = new Intl.RelativeTimeFormat('ko')
return formatter.format(diff,"days")
}
product를 뿌리는것까진 할만했는데 페이지 네비게이션을 만드는순간 뭐가 뭔지 너무 어려워졌다
infinite scrolling구현도 배웠는데 위의 코드와 동일하지만 조금 다르다 UI적으론 infinite scrolling이 나을듯