如果请求的页面没有底层服务器端资源,我正在服务器端呈现页面中寻找处理HTTP 404的最佳实践.

例如,假设请求的页面为http://localhost:3000/places/5.在我的SSG实施中:

export async function getServerSideProps(context) {
  const placeId = context.params.placeId;
  const places = await getPlace(placeId);
  
  if (!places.length) { /* is there anything here I can do to facilitate a 404? this place does not exist in the db */ }

  return {
    props: {
      places[0],
    },
  };
}

应该是不言自明的,但如果请求的id(在本例中为5)不是我数据库中的一个位置,我如何将其作为HTTP 404处理?

推荐答案

您可以通过返回一个对象来实现这一点,如下所示,返回notFound: true.如果您的下一页是,它将重定向到404页.js版本大于v10.

notFound布尔值允许页面返回404状态和404页面.对于notFound: true,即使之前有一个成功生成的页面,页面也将返回404.接下来是here多个.js的官方文档.

export async function getServerSideProps(context) {
  const placeId = context.params.placeId;
  const places = await getPlace(placeId);

  if (!places.length) { 
   return {
     notFound: true,
   }
  }

  return {
    props: {
      places[0],
    },
  };
}

Javascript相关问答推荐

使用脚本标签时的JSDoc智能感知

如何在Jest中调用setupFile下列出的文件所需的函数?

如何使用React渲染器放置根dis?

在JavaScript中,是否有一种方法可以创建自定义thable,在等待某些代码后自动触发它?

Klaro与Angular的集成

IMDB使用 puppeteer 加载更多按钮(nodejs)

如何为我的astro页面中的相同组件自动创建不同的内容?

自定义高图中的x轴标签序列

分层树视图

从Node JS将对象数组中的数据插入Postgres表

构造HTML表单以使用表单数据创建对象数组

如何使onPaste事件与可拖动的HTML元素一起工作?

我创建了一个创建对象的函数,我希望从该函数创建的对象具有唯一的键.我怎么能做到这一点?

更改预请求脚本中重用的JSON主体变量- Postman

根据一个条件,如何从处理过的数组中移除一项并将其移动到另一个数组?

以编程方式聚焦的链接将被聚焦,但样式不适用

无法设置RazorPay订阅API项目价格

如何在下一个js中更改每个标记APEXCHARTS图表的 colored颜色

用Reaction-RT-Chart创建实时条形图

为什么在运行于<;img>;事件处理程序中的JavaScript中x和y是不可变的?