Sny*_*max 6 javascript next node.js express
有没有办法查看当前中间件之后是否有函数。IE
router.get('/', function(req, res, next){
if(next){//always returns true
}
});
Run Code Online (Sandbox Code Playgroud)
我有一个函数来获取信息,根据路径,信息将显示在表格或表单中,或者与其他数据组合。
我想要一个类似于
function findAll(req, res, next){
db.findAll(function(err, docs){
if(next){
req.list = docs
return next();
}else{
res.render('table', {list:docs};
}
});
}
Run Code Online (Sandbox Code Playgroud)
这样我就可以在任何一个中使用相同的功能
router.get('/', findAll, handleData);
Run Code Online (Sandbox Code Playgroud)
或者
router.get('/', findAll);
Run Code Online (Sandbox Code Playgroud)
并且在任何一种情况下都会发送响应。有没有一种方法可以像 express 在 next() 处理程序中那样为路由器定义堆栈
例子
var layer = stack[idx++];
Run Code Online (Sandbox Code Playgroud)
如果下一个函数存在,则它会捕获下一个函数,但我无法从我的函数访问此范围。有没有办法我可以自己定义图层。
这似乎对防止冗余代码非常有用
感谢保罗,我能够解决下一个问题。目前这个工作
function findAll(callback){
return function send(req, res){
db.findAll(function(err, docs){
if(callback){
req.docs = docs
return callback(req, res, next());
}
res.render('table', {docs:docs});
});
}
}
function handleData(req, res, next){
res.send(req.docs);
}
Run Code Online (Sandbox Code Playgroud)
将与
router.get('/', findAll());
Run Code Online (Sandbox Code Playgroud)
或者
router.get('/', findAll(handleData));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1710 次 |
| 最近记录: |