我正在将项目迁移到Sails.js,我决定使用Sails,因为我需要将许多函数链接到单个路径,并且在它的文档中,它是可行的但是我尝试了一个例子而我无法使它工作,当我尝试在路径上执行两个函数时,我收到此错误:
错误:
next
(如在req,res,next中)永远不应该在动作函数中调用(但在动作algo/fn1
中,它是!)它被调用时没有参数。请改用res.ok()
或res.json()
等方法。
我做错了什么或者我怎样才能使它有效? 这是我的代码:
routes.js
// ...
'get /chain': [
'AlgoController.fn1',
'AlgoController.fn2'
],
// ...
AlgoController.js
let Controller = {};
Controller.fn1 = function(req, res, next) {
req.executed = ['executed fn1'];
next();
};
Controller.fn2 = function(req, res, next) {
req.executed.push('executed fn2');
res.send(req.executed.join(' and '));
};
module.exports = Controller;
如果删除next()或使用res.ok()/ res.json(),则永远不会执行第二个函数。
答案 0 :(得分:1)
好吧,我使用 req.next()代替 next()解决了这个问题,所以这就是代码:
let Controller = {};
Controller.fn1 = function(req, res) {
req.executed = ['executed fn1'];
return req.next(); // this is how you call next fn
};
Controller.fn2 = function(req, res) {
req.executed.push('executed fn2');
res.send(req.executed.join(' and '));
};
module.exports = Controller;
这很有效,希望这有助于其他人。