Next JS一直显示api端点发送的旧数据



我正在用NextJS 13构建一个NextJS应用程序。我不想在应用程序中有任何缓存,因为我总是想确保有最新的数据。

Stack: NextJS 13, Prisma ORM, NeonDB

我的page.tsx文件包含以下内容以确保没有应用缓存:

export const revalidate = 0
export const dynamic = 'force-dynamic'

我的所有端点都有以下选项:

{
cache: 'no-store',
}

但是,当我更新数据时,我使用

const toggleEndpoint = (isCollected: boolean) => async () => {
await fetch('/api/expenses/recurrents', {
method: 'PUT',
body: JSON.stringify({
type: 'toggleCollected',
isCollected,
}),
})
router.refresh()
}

最后,我也尝试更新我的vercel.json文件:

"headers": [
{
"source": "/(.*)",
"headers": [
{
"key": "Cache-Control",
"value": "no-cache, no-store, must-revalidate"
},
{
"key": "Pragma",
"value": "no-cache"
},
{
"key": "Expires",
"value": "0"
}
]
}
]

但是似乎什么都没有发生,我仍然有旧的数据显示,当我检查数据库时,我有更新的数据。有谁知道我可以试试什么吗?

编辑:我找到了一个解决方案,通过将request参数添加到我的GET端点并使用它,它似乎有效地调用端点并返回最新数据。
export async function GET(request: Request) {
console.log(request.url)
const amountLeft = await prisma.amountOnAccount.findFirst({
where: {
userId: {
equals: process.env.USER_ID,
},
},
})
return NextResponse.json(amountLeft ? amountLeft.amount : 0)
}

很高兴你自己想出来了,

也可以使用

revalidatePath(request.url)

在API

中返回响应之前

相关内容

  • 没有找到相关文章

最新更新