我需要从数据库中查找条目并生成元数据并呈现实际的页面内容。
目前,我正在这样做:
export const generateMetadata = async ({
params: { questionSlug },
}: Props): Promise<Metadata> => {
const sql = await connectToPostgres();
const question = await findQuestion(sql, questionSlug);
if (!question) {
return {};
}
return {
alternates: {
canonical: `https://ray.run/questions/${question.slug}`,
},
title: question.question,
};
};
const Page = async ({ params: { questionSlug } }: Props) => {
const sql = await connectToPostgres();
const question = await findQuestion(sql, questionSlug);
if (!question) {
return notFound();
}
// ...
};
Run Code Online (Sandbox Code Playgroud)
但这意味着我必须对相同的数据库查询两次才能呈现相同的页面。
有没有办法一次获取数据并在两种方法中使用它?