728x90
처음에는 오류의 원인을 잘못잡았다.
그래서 계속 Promise와 관련된 오류인지 알고 다른곳에서 헤매고 있었다.
근데 props의 type을
interface BoardProps {
data: IboardItem[];
}
이렇게 바꾸니 오류가 바꼈다.
이런 Promise와 관련된 오류가 아닌 withId<Document> 저부분과 관련된 오류인것 같았다.
그래서 검색해보니 withId는 mongoDB에서 가져온 데이터의 타입을 말한단다.
근데 맞다.
난 현재 mongoDB에서 데이터를 가져와서 그걸 밑의 컴포넌트로 내려서 사용하려고 하는과정에서 오류가 계속 발생하는 것이었다.
WithId는 기본적으로 _id 필드와 관련된 타입이다. 그러나 IboardItem에는 _id말고도 title도 있고 content도 있다.
title과 content는 _id와는 다른 형태의 타입이다. _id는 Objectid 와 관련이 있다.
그래서 제네릭을 이용해서 IboardItem \ null 이런식으로 지정해주어야한다.
IboardItem[] | null
import { connectDB } from "@/util/database";
import BoardItem from "./BoardItem";
import { ObjectId } from "mongodb";
export interface IboardItem {
_id: ObjectId;
title: string;
content: string;
author?: string;
}
export interface BoardProps {
data: IboardItem[];
}
export default async function Qa() {
const client = await connectDB;
const db = client.db("market");
const data: IboardItem[] | null = await db
.collection<IboardItem>("post")
.find()
.toArray();
return (
<div className="list-bg">
<BoardItem data={data} />
</div>
);
}
"use client";
import type { IboardItem, BoardProps } from "../board/page";
export default function BoardItem({ data }: BoardProps) {
return (
<div>
<h2>Q & A</h2>
{data[0].content}
</div>
);
}
728x90
'교육후 개인공부 > TroubleShooting' 카테고리의 다른 글
[TroubleShooting] cart의 수량이 마이너스로 간다.... (0) | 2024.05.22 |
---|---|
[troubleshooting] 배포후 로그인이 안된다..... (0) | 2024.05.21 |
[Next.js] NextAuth의 매력에 빠지다 (0) | 2024.05.11 |
[TroubleShooting] NextAuth에서 token과 session (0) | 2024.05.10 |
[TroubleShooting] query data를 여러개 가져오는과정중 발생한에러 (1) | 2023.10.21 |