有没有办法在单个 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 } };
}
我可能正在尝试一些愚蠢的事情,因此非常感谢指向正确方向的指针!!
答案 0 :(得分:6)
您是否尝试过以下操作?
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 调用的解析值