我使用NextJS 13和应用程序路由器,以及Prisma来管理数据库。起初,我开始直接在服务器端组件中使用Prisma查询,而不是在API中创建另一个端点并从那里获取,但有人告诉我这不是正确的方式,我应该从Api中“获取”。有没有什么实际的理由让你更喜欢哪种方式?
我在网上找不到关于这件事的信息。每当人们谈论获取数据的不同方式时,他们要么将服务器端获取与客户端获取进行比较,要么将服务器端查询与客户端获取进行比较,而从不将服务器端查询与服务器端获取进行比较。
通过Prisma查询,我的意思是:db.model.findMany()
,我所说的fetch是指发送一个axios或fetch请求到一个API端点,它实际上做同样的事情。
1条答案
按热度按时间d8tt03nd1#
你的方法是对的。您应该直接在
getServerSideProps
中运行prisma查询,并且不需要为它们创建API,因为您已经在服务器中,这会产生额外的不需要的请求。根据next.js documentation,getServerSideProps或API路由:
当您想要从服务器获取数据时,可能会尝试使用API Route,然后从getServerSideProps调用该API路由。这是一种不必要且效率低下的方法,因为它会导致由于getServerSideProps和API Routes都在服务器上运行而产生额外的请求。”
所以最好保留外部api的API路由,并直接在getServerSideProps中运行prisma查询