Estou tentando usar a rota da API para chamar o banco de dados e usar os dados para exibir a tabela. Quando está em localhost, tudo funciona. No entanto, depois de implantá-lo no Vercel, os dados não foram atualizados, ele sempre exibe os dados no momento da implantação (ele usa os dados do cache mesmo que eu configure o cache para?), Isso significa que no-store
os dados não são solicitados ao banco de dados a cada hora em que a página é carregada.
import { EventsSchema, columns } from "./components/columns";
import { DataTable } from "@/app/match/components/data-table";
async function getData(): Promise<EventsSchema[]> {
const data = await fetch(`${process.env.NEXT_PUBLIC_API_URL}/api/event`, {cache: "no-store",
}).then((res) => res.json());
return data;
}
export default async function Match() {
const data = await getData();
return (
<>
<DataTable data={data} columns={columns} />
</>
);
}
/api/evento:
import { connectToDB } from "@/app/utils/database";
import Events from "@/models/events";
export const GET = async () => {
try {
await connectToDB();
const events = await Events.find({}).select(
"-_id -id -expireAt -homeNmae -awayName -competition"
)
return new Response(JSON.stringify(events), { status: 200 });
} catch (error) {
return new Response("Failed to fetch all events", { status: 500 });
}
};
Eu também tentei revalidatePath , no entanto, os dados ainda não estão atualizando.
import { NextRequest, NextResponse } from "next/server";
import { revalidatePath } from "next/cache";
export async function GET(request: NextRequest) {
const path = request.nextUrl.searchParams.get("/match") || "/";
revalidatePath(path);
return NextResponse.json({ revalidated: true, now: Date.now() });
}
Posso perguntar por que e como posso deixar a solicitação de página ao banco de dados toda vez que o cliente carregar a página (será muito exigente para o banco de dados e o aplicativo se o número de clientes for grande, se sim, como posso carregar o equilíbrio?)?