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