NextJS getServerSideProps() 具有多个获取请求
Posted
技术标签:
【中文标题】NextJS getServerSideProps() 具有多个获取请求【英文标题】:NextJS getServerSideProps() with multiple fetch requests 【发布时间】:2021-04-09 06:29:53 【问题描述】:有没有办法在单个 getServerSideProps()
中从多个 API 路由中获取数据?
我有一个表,我需要显示来自多个 MongoDB 集合的数据,并试图弄清楚如何将这些数据拉入。
基本上,我需要将这两个功能结合起来,但似乎找不到最好的方法。
export async function getServerSideProps()
const res = await fetch(`$process.env.APP_DOMAIN/api/$apiRoute`);
const data = await res.json();
return props: operations: data ;
export async function getServerSideProps()
const res = await fetch(`$process.env.APP_DOMAIN/api/$apiRoute2`);
const data = await res.json();
return props: incidents: data ;
我可能正在尝试一些愚蠢的事情,因此非常感谢指向正确方向的指针!
【问题讨论】:
【参考方案1】:您是否尝试过以下操作?
export async function getServerSideProps()
const [operationsRes, incidentsRes] = await Promise.all([
fetch(`$process.env.APP_DOMAIN/api/$apiRoute`),
fetch(`$process.env.APP_DOMAIN/api/$apiRoute2`)
]);
const [operations, incidents] = await Promise.all([
operationsRes.json(),
incidentsRes.json()
]);
return props: operations, incidents ;
Promise.all
将触发两个请求,完成后它们将返回两个 fetch 调用的解析值
【讨论】:
做到了,感谢您的快速回答!我对此还很陌生,我知道我必须更多地研究 Promises。 我使用的模式相同,但它会降低页面性能。 API 的性能如何?我认为这种模式比顺序执行要好得多以上是关于NextJS getServerSideProps() 具有多个获取请求的主要内容,如果未能解决你的问题,请参考以下文章
为啥 NextJS 中的 ApolloGraphQL 示例使用 getStaticProps 而不是 getServerSideProps
在 NEXTJS 的 getServerSideProps() 中获取一些 html 表单数据(或对象)
如何将道具从组件传递到 NextJS 中的 getServerSideProps()?
nextjs getServerSideProps 显示加载