如何在SailsJS中使用类变量?

时间:2018-08-27 13:09:51

标签: node.js sails.js

在我的sailsJS项目中,我使用Service作为API包装器与外部API通信。

例如,我想拥有一个初始化函数并传递诸如baseUrl,apiKey之类的参数,然后再调用sendRequest(endpoint)。

但是,今天我发现服务无法实例化,但是可以在全球范围内使用。由于SailsJS是异步工作的,因此每次都只会覆盖变量。

所以我的问题很简单:将“类”与类变量一起使用的正确方法是什么,在那里我可以拥有多个实例,就像我从PHP世界中了解它们一样?

首先,我想使用一个项目实例化我的API包装器,该项目包含基本数据,例如baseUrl和apiKey。

       const ApiService = ServiceBase.getApiService(project);

       ApiService.getEndpoint(endpoint).then(async(response) => {
          // handle response
       }

函数获取ApiService。 在这里,我尝试设置项目变量。

    getApiService: (project) => {
         this.setConfigParam('apiKey', project.api_key);
         this.setConfigParam('baseUrl', project.url);
        return ShopApiService;
     }

函数getEndpoint(获取请求的快捷方式)

    getEndpoint: async function(endpoint) {

       if (ShopApiService.isTokenExpired()) {
          await this.authorizeRequest();
       }

       return this.sendRequest(endpoint);

     }

authorizeRequest(为后续请求设置accessToken)

    authorizeRequest: async function() {
      let response = await this.postRequest('auth/login', {apiKey: module.exports.config.apiKey});


      if (response && response.statusCode == 200) {
          module.exports.token.updated_at   = Date.now();
          module.exports.config.accessToken = response.body.accessToken;

          return true;
     }

      return false;

  }

我的问题是异步调用会覆盖诸如accessToken或baseUrl之类的变量,因此,如果获取访问令牌的请求完成了-可能是针对另一个请求。

0 个答案:

没有答案