2016-08-24 27 views
0

我正在做一个博客应用程序,我正在努力寻找一种方式来重定向/发送一个特定的状态,然后采取相应的行动。如何将expressjs重定向到特定状态?

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

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

我希望能够“读取”此状态(我用我的看法和路线和SuperAgent的我的Ajax请求的反应),然后做一些事情,例如,如果我的文章是成功的添加,然后加载页面上的某个组件,该组件将具有h1的说法:发布文章的工作非常出色。

所以这是第一部分。

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

而且,由于我缺乏关于服务器和客户端如何彼此对话的HTTP基础知识的知识,如果您有任何好的文章/书推荐我想知道。

回答

1

第一部分。根据您是否使用状态或数据库(如flux或redux),如果没有,您可以让ajax响应从您的服务器获得HTTP状态。使用它,你可以使用setState来设置一个叫做isArticleSaveSucessful的状态属性。然后,只要该密钥为真,就简单地呈现您的成功消息组件。

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

+0

嗨Dan,非常感谢您的回答,我还有一个问题,在我的expressjs反应博客应用程序中,我正在使用react-router作为我的路由器,并且我在考虑无法使用express js因为react-router只管理我的路由,因此告诉我是否或者不是一个组件连接到路由器,我想知道是否有一个内置的功能抛出未知路由的默认组件,我不知道是否你明白我的意思,对不起我的英语 – MaieonBrix

+0

React-route确实能够显示一个默认路径,可以用来渲染一个不是'path ='*''的页面,但它不适用于什么你正在描述。只有当你的路线不符合模式时才适用。对于您的场景,博客网址与您的路线匹配,但未找到特定的博客条目,这在技术上满足了作业的反应路由器部分。服务器路由背后的逻辑与客户端路由不同。除此之外,在你的路线上显示一个notFound组件是更“反应”的方式。 – Dan