在控制器中调用函数本身将启动js

时间:2018-12-10 12:23:58

标签: javascript node.js sails.js

我知道之前也曾问过同样的问题,但是以前的问题是用不同的语言和不同的框架来进行的,我尝试了前面问题的答案中提到的所有方法,但没有发现运气。

所以又来了。

我的Sails js应用程序中有一个名为orderController的控制器 代码是:

module.exports = {
    order_history: async function(req, res){
        //get a response from an API and it is saved in nData
        if(nData.status_code == 0 && nData.result == 'succeed'){
            res.ok(nData.data);
        }else{
            updateCredentials();
            order_history(req, res);
        }
    },

};

现在,如果有过期的凭据,那么它将更新凭据,并且我希望它重复自身,以便在凭据过期的情况下可以返回正确的响应。我不希望为此发送另一个请求。

1 个答案:

答案 0 :(得分:1)

我的建议是使用您从控制器内调用的order_history逻辑创建一个帮助器。如果失败,则可以执行update_credentials,然后再次调用它。我之所以这样说,是因为Sails是基于以下思想构建的:控制器的目的是对特定请求端点的特定响应,而不是可重用的代码。那就是帮助程序出现的地方,目的是成为一个全球可用的功能。这样做的好处是,您不会遇到订单历史记录由于某种原因而失败的情况,而该原因不是需要更新凭证,调用自身,又由于该原因再次失败,更新凭证,调用自身。您可以尝试更新凭据,如果再次失败,则返回错误消息。