일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 30 |
Tags
- Kotlin 클래스
- Kotlin 클래스 속성정의
- activate 오류
- 자바 기본타입
- 희망
- 성공
- python Django
- Variable declaration
- Kotlin else if
- 파이썬 반복문
- 파이썬 클래스
- Kotlin If
- 좋은글
- 장고 가상환경
- Python Class
- django virtualenv
- NextJs
- 넥스트js
- Kotlin Class
- Python
- Kotlin 조건문
- github
- 다중조건문
- 도전
- 클래스 속성
- 파이썬
- 파이썬 제어문
- 강제 타입변환
- git
- 파이썬 장고
Archives
- Today
- Total
키모스토리
#10. Read Blog Posts (home) 본문
반응형
db collection에서 posts 데이터를 최신 등록 순으로 조회해서 표시
PostCard 를 컴포넌트로 분리해서 구현
/src/app/page.jsx
import PostCard from "@/components/PostCard";
import { getCollection } from "@/lib/db";
export default async function Home() {
const postsCollection = await getCollection("posts");
const posts = await postsCollection?.find().sort({ $natural: -1 }).toArray();
if(posts){
return (
<div className="grid grid-cols-2 gap-6">
{
posts.map((post) => (
<div key={post._id}>
<PostCard post={post} />
</div>
))
}
</div>
);
} else {
return <p>Failed to fetch the data from database.</p>
}
}
/src/components/PostCard.jsx
import Link from "next/link";
export default function PostCard({ post }) {
return (
<div className="border border-slate-400 border-dashed p-4 rounded-md h-full">
<p className="text-slate-600 text-sm">
{post._id.getTimestamp().toLocaleString("ko-KR")}
</p>
<Link href="" className="block text-xl font-semibold mb-4">
{post.title}
</Link>
<p className="text-sm">{post.content}</p>
</div>
);
}
반응형
'Web Devlopment > Next-Blog Project' 카테고리의 다른 글
#9. Create Blog Posts (0) | 2025.04.05 |
---|---|
#8. Auth & Guest Links (0) | 2025.04.05 |
#7. Login (0) | 2025.04.05 |
#6. Active Links (0) | 2025.04.05 |
#5. server-only (0) | 2025.04.05 |