next.js 如何在服务器端组件中获取数据

zxlwwiss  于 2023-10-18  发布在  其他
关注(0)|答案(1)|浏览(271)

我使用NextJS 13和应用程序路由器,以及Prisma来管理数据库。起初,我开始直接在服务器端组件中使用Prisma查询,而不是在API中创建另一个端点并从那里获取,但有人告诉我这不是正确的方式,我应该从Api中“获取”。有没有什么实际的理由让你更喜欢哪种方式?
我在网上找不到关于这件事的信息。每当人们谈论获取数据的不同方式时,他们要么将服务器端获取与客户端获取进行比较,要么将服务器端查询与客户端获取进行比较,而从不将服务器端查询与服务器端获取进行比较。
通过Prisma查询,我的意思是:db.model.findMany(),我所说的fetch是指发送一个axios或fetch请求到一个API端点,它实际上做同样的事情。

d8tt03nd

d8tt03nd1#

你的方法是对的。您应该直接在getServerSideProps中运行prisma查询,并且不需要为它们创建API,因为您已经在服务器中,这会产生额外的不需要的请求。根据next.js documentation
getServerSideProps或API路由:
当您想要从服务器获取数据时,可能会尝试使用API Route,然后从getServerSideProps调用该API路由。这是一种不必要且效率低下的方法,因为它会导致由于getServerSideProps和API Routes都在服务器上运行而产生额外的请求。”
所以最好保留外部api的API路由,并直接在getServerSideProps中运行prisma查询

相关问题