我正在使用$ resource并缓存get请求的结果.我的问题是,在发布请求后,缓存未被无效.
以下是服务的返回值:
return $resource('http://url.com/api/url/:id', {}, {
'query' : {
method : 'GET',
isArray:true,
cache : true
},
'get' : {
method : 'GET',
cache : false
}
})
Run Code Online (Sandbox Code Playgroud)
这是我在控制器中使用的保存方法.如您所见,我正在使用post请求上的回调来重新计算查询/名词列表.
var newNoun = new Noun($scope.noun);
newNoun.$save(function(x) {
$scope.nouns = Noun.query();
});
Run Code Online (Sandbox Code Playgroud)
我想在调用post或其他非get方法后使缓存无效.我怎么能这样做?这已经内置到$ resource中了还是我需要自己实现它?
Lodash文档说它支持延迟评估.从我的测试来看,下面的链被评估100次而不是10次.我使用的是3.10.1版本.
_(_.range(100))
.map(function(x) {console.log(1); return x; })
.take(10)
.value()
Run Code Online (Sandbox Code Playgroud)
您可以看到我们在内部打印100次map,而不是我预期的10次.看看这里的问题:https://jsfiddle.net/07utwk6y/
我究竟做错了什么?我怎样才能懒惰地评价这个?
更新:这似乎是Lodash的回归.我测试了它在不同版本中的工作原理,并得出以下结果:
版本2.4.2:100次https://jsfiddle.net/4Lq7z5xL/
版本3.0.0:10次https://jsfiddle.net/fd6g6un5/
版本3.9.0 10次https://jsfiddle.net/ju8rppee/
版本3.10.0:100次https://jsfiddle.net/x1g13oo8/
DRF 文档提供了有关如何创建自定义权限的明确说明,提供了以下代码示例:
from rest_framework import permissions
class BlacklistPermission(permissions.BasePermission):
"""
Global permission check for blacklisted IPs.
"""
def has_permission(self, request, view):
ip_addr = request.META['REMOTE_ADDR']
blacklisted = Blacklist.objects.filter(ip_addr=ip_addr).exists()
return not blacklisted
Run Code Online (Sandbox Code Playgroud)
默认情况下,当权限检查函数返回时,这会给出以下响应False。
HTTP 403 FORBIDDEN
内容类型:application/json
变化:接受
允许:GET、POST、HEAD、OPTIONS{ "detail": "您无权执行此操作。" }
我想更改上面的“详细信息”部分,提供对开发人员更友好的错误消息。我怎么能做到这一点,确保每次权限检查失败时都显示消息?
我在使用 Django Rest 框架提出验证错误时遇到困难。
我有一个所有者字段。所有者字段需要访问请求对象。该文档建议使用以下方法:
def pre_save(self, obj):
obj.owner = self.request.user
Run Code Online (Sandbox Code Playgroud)
我的问题是如果此代码失败如何引发验证错误。我尝试在 pre_save 方法中引发错误,但这无法正常工作。它实际上会导致从 Django 返回 HTML 响应,而不是来自 Django Rest Framework 的消息。
在JavaScript中,如何改变函数内部数组的值?我知道在使用某些数组方法时会发生这种情况,但它似乎不适用于正常分配.
var arr = [4]
function changeArray(arr) {
arr = [1,2,3];
}
// arr is still equal to [4]. I want it to equal [1,2,3].
Run Code Online (Sandbox Code Playgroud)
我的理解是这个代码不会改变函数之外的"arr"的值.我怎样才能改变作为参数传递的数组?
可能重复:
JavaScript的数学是否被破坏?
在过去的几天里,我刚刚开始使用Javascript,我注意到一些看似非常特殊的东西.当我将一些数字加在一起时,我最终会得到一个略微错误的答案.
4.99 + 0.98 = 5.970000000000001
为什么会这样?