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
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

Have you tried to actually test cache from npm run build && npm start ??
npm run dev isnt a good indicator of caching
yep
or performance
I tried with build and start as well
before pushing to vercel
check vercel datacache out and next docs guide on opting out of cache
But I'm fetching it like this
 const dynamic = await fetch('https://api.vercel.app/products', {
    cache: 'no-store',
  });
prob change revalidate settings or make the route dynamic cache
with no-store cache
i meant:
export const dynamic = 'force-dynamic' 
// or
export const revalidate = 0 // can me greater then 0 if you want it to last longer
@Naeemgg with `no-store` cache
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
🥲
can you send your full code of route
 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})}}
i don't see your export of revalidation
I did it in layout.tsx
ahh can you also try manually here
in route?
ye
lemme give a min
because layout config usually affects the nested page files, but im not sure about route files
Answer
building...
IT WORKED
@risky
yay!!!!
:all_the_things: