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方法中,如果对象在缓存中存在的话,可以把它拖出来用,或者可以在需要的时
候让它创建这个对象: