在研究发表Topic这块,routes.js
里面路由是这么写的
// 保存新建的文章
// TODO: 如果创建文章的过程太长,导致session过期,界面的内容会丢失
// FIXME: 采用前端来判断,不通过跳转的形式来解决
app.post('/topic/create', auth.signinRequired, limit.postInterval, topic.put);
app.post('/topic/:tid/edit', topic.update);
app.post('/topic/collect', auth.userRequired, topic.collect);
app.post('/topic/de_collect', auth.userRequired, topic.de_collect);
在 topic.put
函数里面,
******
Topic.newAndSave(title, content, req.session.user._id, function (err, topic) {
if (err) {
return next(err);
}
var proxy = new EventProxy();
var render = function () {
res.redirect('/topic/' + topic._id);
};
proxy.assign('tags_saved', 'score_saved', render);
proxy.fail(next);
********
有两处next,第一处是有err,第二处是 proxy.fail
, 疑惑是路由中没有匹配项的了,这里的next跳转执行什么去了呢??
9 回复
@coolicer if(err){ return next(err)} ,proxy.fail(next);
next是两种用途,一个是匹配下一个路由,一个是跳转到下个函数。
我就是不知道他现在是跳哪去了。。
路由里面没找到。 中间件在app.js 里面也没找到