NodeClub 代码topic.put函数中的next() 执行到哪里去了??
发布于 10 年前 作者 wensonsmith 4407 次浏览 最后一次编辑是 8 年前

在研究发表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跳转执行什么去了呢??

10 回复

我只看到一个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 没发现能跳的中间件。。。

不知道从何入手了

@wensonsmith

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是哪里触发的,本论坛,我在页面上也找不到触发的地方啊,大神解释一下

回到顶部