我的API调用会自动缓存在$ cacheFactory({cache: true}
)提供的默认缓存中。如果我向DB添加另一条记录,我希望能够将相关信息(从后API调用返回以添加记录)添加到我所拥有的缓存信息中,而不是删除缓存并让它重新请求所有数据。
var $httpDefaultCache = $cacheFactory.get('$http');
var data = $httpDefaultCache.get(key)
密钥是我的API请求的路径。数据只是一个数组。元素1是我存储的数据,它是包含数组的哈希。我打算简单地添加我的新记录。但是当我检索它($httpDefaultCache.get(key)[1]
)时,我没有得到哈希值。我得到一个字符串。我可以把所谓的字符串转换成哈希或简单地添加到字符串中,但我想我错过了从缓存中检索数据的关键组件。想法?
答案 0 :(得分:1)
如果有人遇到类似的问题,我会如何前进的答案。
假设您使用$ http对缓存设置为true的API发出get请求。
在控制器中将此请求的返回值设置为任何值;我们将使用$ scope.politicians。
由于我们使用了默认缓存,因此我们可以通过$cacheFactory.get('$http')(cachedUrl)
检索它。
执行$cacheFactory.get('$http').remove(urlOfGetRequest)
对我最初设置为API调用返回值的$ scope值进行任何更改,然后在完成后将缓存重置为该范围。
$scope.politicians[new-key] = new-value;
再次设置缓存,但使用范围作为值。
$cacheFactory.get('$http').put(urlOfGetRequest, $scope.politicians);
使用非默认缓存会使此过程变得更加容易。
我发誓必须有更直接的方法来做到这一点。但我找不到它。