Next.js Discord

Discord Forum

Not getting latest data from db on Vercel | Neondb (postgresql)

Answered
Naeemgg posted this in #help-forum
Open in Discord
Avatar
this is my route file
import prisma from "@/prisma/client"
import { NextResponse } from "next/server"

export const GET = async()=>{
try {
data = await prisma.docs.findMany({})

return NextResponse.json(data,{status: 200})}

 catch (error) {
   console.log(error)
return NextResponse.json({msg:"Something went wrong"},{status:503})}}

while hitting it from localhost I'm getting all the latest data but from Vercel I'm getting old data not the latest one
Answered by risky
because layout config usually affects the nested page files, but im not sure about route files
View full answer

33 Replies

Avatar
Have you tried to actually test cache from npm run build && npm start ??
npm run dev isnt a good indicator of caching
Avatar
yep
Avatar
or performance
Avatar
I tried with build and start as well
before pushing to vercel
Avatar
check vercel datacache out and next docs guide on opting out of cache
Avatar
But I'm fetching it like this
 const dynamic = await fetch('https://api.vercel.app/products', {
    cache: 'no-store',
  });
Avatar
prob change revalidate settings or make the route dynamic cache
Avatar
with no-store cache
Avatar
i meant:
export const dynamic = 'force-dynamic' 
// or
export const revalidate = 0 // can me greater then 0 if you want it to last longer
Avatar
@Naeemgg with `no-store` cache
Avatar
i was meaning that nextjs has fetch cache as well as page... you have to make suree both doesn't cache
let me give revalidate a shot
🥲
Avatar
can you send your full code of route
Avatar
 const [tableData,setTableData] = useState([])
    useEffect(()=>{
        const getData = async()=>{
            const response = await fetch(`/api/get-all-data`,{cache:"no-store"})
            const data = await response.json()
            console.log("useEffect called")
            console.log(data)
            setTableData(data)
        }
        getData()
    },[])

this is how I'm hitting from client component

And below is get-all-data/route.ts
import prisma from "@/prisma/client"
import { NextResponse } from "next/server"

export const GET = async()=>{
try {
data = await prisma.docs.findMany({})

return NextResponse.json(data,{status: 200})}

 catch (error) {
   console.log(error)
return NextResponse.json({msg:"Something went wrong"},{status:503})}}
Avatar
i don't see your export of revalidation
Avatar
I did it in layout.tsx
Avatar
ahh can you also try manually here
Avatar
in route?
Avatar
ye
Avatar
lemme give a min
Avatar
because layout config usually affects the nested page files, but im not sure about route files
Answer
Avatar
building...
IT WORKED
@risky
Avatar
yay!!!!
Avatar
:all_the_things: