小编Luc*_*gan的帖子

如何避免在 Next.js v13 中两次获取相同的数据?

我需要从数据库中查找条目并生成元数据并呈现实际的页面内容。

目前,我正在这样做:

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)

但这意味着我必须对相同的数据库查询两次才能呈现相同的页面。

有没有办法一次获取数据并在两种方法中使用它?

typescript next.js next.js13

5
推荐指数
2
解决办法
1464
查看次数

标签 统计

next.js ×1

next.js13 ×1

typescript ×1