在研究发表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跳转执行什么去了呢??
我只看到一个Next,第二个只是eventproxy的error handle。随便说说,我研究不深。
你说的next到哪里去,应该会到其他/topic的路由去。
@coolicer 这是 express 的中间件模型的一部分,请去了解一下这个模型。
@coolicer 我只是顺便 at 你…我是在回复楼主
整个项目都要看?
@coolicer if(err){ return next(err)} ,proxy.fail(next);
next是两种用途,一个是匹配下一个路由,一个是跳转到下个函数。
我就是不知道他现在是跳哪去了。。
路由里面没找到。 中间件在app.js 里面也没找到
我知道这是connect的函数,但是 不知道他跳到那个函数去了,路由里没有,app.js 没发现能跳的中间件。。。
不知道从何入手了
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); 我的意思是,put中的error,next到下面的 /topic的路由中。
调试下看看
topic.collect是哪里触发的,本论坛,我在页面上也找不到触发的地方啊,大神解释一下