在SailsJS路径上使用多个函数

时间:2018-04-03 22:49:35

标签: sails.js

我正在将项目迁移到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(),则永远不会执行第二个函数。

1 个答案:

答案 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;

这很有效,希望这有助于其他人。