这是我的准则。我使用prisma
从postgreSQL
数据库中获取数据。问题是getServerSideProps
永远不会被调用。日志消息甚至没有打印在控制台中。文件位于app文件夹中
*page.tsx*
import Header from "./HomePageComponents/Header/Header";
import RestaurantCards from "./HomePageComponents/RestaurantCards/RestaurantCards";
import { PrismaClient } from "@prisma/client";
import { NextPage } from "next";
export const getServerSideProps = async () => {
const prisma = new PrismaClient();
const restaurants = await prisma.restaurant.findMany();
console.log("Logging: ", restaurants);
return { props: { restaurants } };
};
const Home: NextPage<any> = (props) => {
return (
<>
<Header />
<RestaurantCards />
</>
);
};
export default Home;
编辑1:可能的答案是,在应用程序路由器中,我们不能使用getServerSideProps
and other traditional for nextjs fetching methods。相反,我们必须将组件转换为异步组件,并在组件内部获取数据。将在服务器端渲染期间进行提取。在将类型分配给功能组件时,可能会出现名为Async Server Component TypeScript Error的问题。
1条答案
按热度按时间nzkunb0c1#
因为你有
page.tsx
,你很可能在next-13应用程序目录中,我们不再有next。js服务器端函数。以前,下一个。js用来检查页面上是否有
getServerSideProps
,如果有,下一个。js用于在服务器上执行此功能并将内容发送到浏览器。在app目录中,我们完全在服务器上。在你的实现中,你仍然可以将函数命名为
getServerSideProps
,但是你需要在组件内部手动调用它。然后在组件内部