gpt4 book ai didi

javascript - 检查是否有 next() 函数表达式

转载 作者:搜寻专家 更新时间:2023-10-31 23:17:48 24 4
gpt4 key购买 nike

有没有办法查看当前中间件之后是否有函数。即

router.get('/', function(req, res, next){
if(next){//always returns true
}
});

我有一个获取信息的函数,根据路径,信息将显示在表格或表单中,或者与其他数据组合。

我想要一个类似于

的功能
function findAll(req, res, next){
db.findAll(function(err, docs){
if(next){
req.list = docs
return next();
}else{
res.render('table', {list:docs};
}
});
}

这样我就可以在两者中使用相同的功能

router.get('/', findAll, handleData);

router.get('/', findAll);

并且在任何一种情况下都会发送响应。有没有一种方法可以像 express 在 next() 处理程序中那样为路由器定义堆栈

例子

var layer = stack[idx++];

如果下一个函数存在,它会捕获它,但我无法从我的函数访问这个作用域。有什么方法可以让我自己定义图层。

这似乎对防止冗余代码非常有用

最佳答案

多亏了 paul,我才能够解决下一个问题。目前这个工作

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);
}

将与

一起工作
router.get('/', findAll());

router.get('/', findAll(handleData));

关于javascript - 检查是否有 next() 函数表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27380531/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com