기존에 게시물을 작성하게되면 crypto.randomUUID()
를 사용해 임시로 id값을 넣어줬는데 이 부분을 수정했다
const { userId } = useAuthStore.getState()
formData.append('userId', userId)
로그인 중인 유저의 id를 폼데이터에 추가했다
{
user_id: userId,
title,
content: description,
lang_category: language,
price: price,
post_img: uploadedImageUrls
}
라우터 핸들러에 user_id : crypto.randomUUID()
부분을 위와 같이 바꿔주었다
상세 페이지에서는 작성자의 정보와 게시물의 Post Image가 필요했다
useEffect(() => {
const fetchData = async () => {
try {
const response = await fetch(`/api/proDetail?id=${id}`);
if (!response.ok) {
throw new Error('Network response was not ok');
}
const data = await response.json();
setPost(data.postData);
setUser(data.userData);
} catch (error) {
console.error('Fetch data error:', error);
}
};
fetchData();
}, [id]);
export async function GET(req: Request) {
const { searchParams } = new URL(req.url);
const id = searchParams.get('id');
if (!id) {
return NextResponse.json({ error: 'ID is required' }, { status: 400 });
}
try {
const supabase = createClient();
// 게시물 정보 가져오기
const { data: postData, error: postError } = await supabase
.from('Request Posts')
.select('*')
.eq('id', id)
.single();
if (postError) {
throw postError;
}
const userId = postData.user_id;
// 유저 정보 가져오기
const { data: userData, error: userError } = await supabase
.from('Users')
.select('*')
.eq('id', userId)
.single();
if (userError) {
throw userError;
}
// 게시물 정보와 유저 정보를 함께 반환
return NextResponse.json({ postData, userData });
} catch (error) {
console.error('Error fetching data:', error);
return NextResponse.json({ error: '데이터 가져오기 실패' }, { status: 500 });
}
}
const {searchParams} = new URL(req.url)
postData.user_id
는 Request Posts 테이블에 있는 user_id
를 의미한다