问题是,一切都在开发中完美地工作,但是如果我在生产中开始,在prisma中创建一行,当我试图检索我在生产中创建的行时,他只检索了npm run build之前的旧行。问题是什么,如何解决?
前端:
const fetchPdfFiles = async () => {
try {
console.log("before fetching");
const response = await fetch("/api/pdf-files");
if (response.ok) {
const data = await response.json();
setPdfFiles(data);
} else {
console.error("Failed to fetch PDF files");
}
} catch (err) {
console.error(err);
}
};
后端:/API/pdf-files
import { NextRequest, NextResponse } from "next/server";
import fs from "fs";
import path from "path";
import prisma from "@/app/libs/prismadb";
export async function GET(req: NextRequest, res: NextResponse) {
console.log("Before try catch block");
try {
const pdfFiles = await prisma?.pdfFile.findMany();
return new NextResponse(JSON.stringify(pdfFiles));
} catch (error: any) {
console.error(error);
return new NextResponse(error);
}
}
我也尝试在前端做{ cache:“no-store”},{ cache:“no-cache”}。但它不工作...
2条答案
按热度按时间8mmmxcuj1#
正在生成时缓存请求。
在下面添加这一行,这样它就不会被缓存:
xuo3flqw2#
服务器端不能调用NextJS自身的API。可以在客户端调用。例如:
无法在应用路由版本的服务器组件中调用self API。页面路由版本的getServerSideProps方法中无法调用self API。
我希望这个答案对你有帮助。