CNode

node.js中next()函数用发问题

问答
Wwksmile发布于10 年前最后回复10 年前5 回复11445 浏览0 收藏

var users = { 'byvoid': { name: 'Carbo', website: 'http://www.byvoid.com' } }; app.all('/user/:username', function(req, res, next) { // 检查用户是否存在 if (users[req.params.username]) { next(); } else { next(new Error(req.params.username + ' does not exist.')); } }); app.get('/user/:username', function(req, res) { // 用户一定存在,直接展示 res.send(JSON.stringify(users[req.params.username])); }); app.put('/user/:username', function(req, res) { // 修改用户信息 res.send('Done'); });

上面代码app.all路由检查用户是否存在,如果存在通过next()函数转移到app.get路由中。用户不存在的else里面next(new Error(req.params.username + ' does not exist.'));这段代码是什么意思呢,下一步是转到那一个路由?app.put路由怎么在这段代码中使用了?

查看回复

回复 (5)

1
1340641314#1·10 年前

先把代码整理好先吧来自react-cnode手机版

L
ljxhappy#2·10 年前

next();是顺序执行下一个路由,添加了擦数new Error(req.params.username + ’ does not exist.’)应该是执行某一个路由,支持这个参数的路由。

L
ljxhappy#4·10 年前
引用 wksmile@ljxhappy 那这里面app.put路由不是没有执行么?这是书上看到的一个例子

@wksmile 你是要做一个restful吗?路由就像是一堆判断,你符合要求才会执行,不符合就不执行,你没发送put请求,当然不会执行啦

T
Treagzhao#5·10 年前

不用all 换成use试试

参与回复
登录后即可参与回复。登录