【问题标题】:How to redirect with expressjs for a specific status?如何使用 expressjs 重定向特定状态?
【发布时间】:2016-08-24 01:22:47
【问题描述】:

我目前正在做一个博客应用程序,我正在努力寻找一种方法来重定向/发送特定状态,然后采取相应的行动。

例如,我有一个使用 mongoose 将数据保存在 mongodb 中的函数。然后如果没有发生错误 200 状态。

newArticle.save(function(err){
   if (err) throw err;
  else {
   res.sendStatus(200);
  }
});

我希望能够“获取”这个状态(我对我的视图和路由使用 react 并为我的 ajax 请求使用超级代理),然后做一些事情,例如,如果我的文章被成功添加然后加载页面上的某些组件会有一个 h1 表示:发表文章做得很好。

所以这是第一部分。

第二部分是,对于我想表达的所有 404 或 500 错误,例如:myblog.com -> myblog.com/something 然后用我的反应路由器简单地渲染一些基本的 404 页面,我不知道该怎么做,我搜索了很多,找不到东西......

而且,由于我缺乏 HTTP 基础知识,例如服务器和客户端如何相互通信,如果您有任何好的文章/书籍可以推荐,我想知道。

【问题讨论】:

    标签: ajax node.js mongodb reactjs


    【解决方案1】:

    第一部分。根据您是否使用状态或数据库(如flux或redux),如果没有,您可以让ajax响应具有来自服务器的HTTP状态。使用它,您可以使用 setState 设置一个名为 isArticleSaveSucessful 的状态属性。如果该键为真,则只需呈现您的成功消息组件。

    第二部分。为了更好的用户体验,我认为你想要的,url 应该仍然是用户想要的,即 blog.com/bad-article-name 但页面应该呈现 404。非常类似于上面,当 API响应返回,相应地设置状态,类似于articleNotFound。然后在您的渲染函数中,对状态进行if 检查,如果为真,则渲染您的错误组件。

    【讨论】:

    • 嗨,丹,非常感谢您的回答,我还有一个问题,在我的 expressjs react 博客应用程序中,我使用 react-router 作为我的路由器,我想我不能使用 express js 监控 404 页面,因为 react-router 仅管理我的路由,因此告诉我是否有组件链接到路由器,我想知道是否有一个内置功能会为未知路由抛出默认组件,我不知道你是否明白我的意思,对不起我的英语
    • React-route 确实具有显示默认路由的能力,该路由可用于呈现path='*' 找不到的页面,但它不适用于您所描述的内容。它仅适用于您的路线与模式不匹配时。对于您的方案,博客 url 确实与您的路由匹配,但未找到特定的博客条目,这在技术上满足了工作的 react-router 部分。服务器路由背后的逻辑与客户端路由不同。除此之外,在你的路线上显示一个 notFound 组件是更“反应”的方式。
    猜你喜欢
    • 1970-01-01
    • 2013-03-03
    • 2018-09-12
    • 1970-01-01
    • 2013-07-10
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多