Page 216 - AngularJS权威教程
P. 216

196  第 18 章  服务器通信


                             }
                     },
                 // ...


             18.15 在 Dynamo 上开始

                 在应用中,我们想把一个用户上传的所有图像都关联到这个唯一的用户。要创建这个关联,
             我们会创建一个Dynamo表存储用户,另外一个存储用户和用户上传文件的关联关系。

                 要开始跟Dynamo打交道,首先要初始化一个Dynamo对象。我们在AWSService服务对象中做
             这件事,就像这样:

                  // ...
                  setToken: function(token, providerId) {
                      // ...
                  },
                  dynamo: function(params) {
                      var d = $q.defer();
                      credentialsPromise.then(function() {
                          var table = new AWS.DynamoDB(params);
                          d.resolve(table);
                     });
                     return d.promise;
                 },
                 // ...
                 正如之前讨论的那样,通过在服务对象中使用promise,只需使用promise的.then() API方法
             来确保凭证在使用之初就已经被设置好了。
                 你可能会问,为什么我们要用dynamo方法来设置参数。有时,我们会要用不同的配置和不同
             的设置跟DynamoDB交互,对于这样的交互,我们可能会需要重新创建已经在页面里用过一次的
             对象。

                 我们可以使用内置的Angular $cacheFactory服务来缓存不同的AWS对象,而不是进行复制。

             18.16  $cacheFactory


                 $cacheFactory服务让我们能在需要的时候创建一个对象,或者在之前已经用过的情况下回
             收和重用一个对象。
                 要开始缓存,我们先要创建一个dynamoCache对象,在这里存储缓存的Dynamo对象:

                 // ...
                 self.$get = function($q, $cacheFactory) {
                     var dynamoCache = $cacheFactory('dynamo'),
                         credentialsDefer = $q.defer(),
                         credentialsPromise = credentialsDefer.promise;

                     return {
                 // ...
                 回到dynamo方法中,如果对象在缓存中存在的话,可以把它拖出来用,或者可以在需要的时
             候让它创建这个对象:
   211   212   213   214   215   216   217   218   219   220   221