小编inp*_*ive的帖子

在发布请求后使$ resource Cache无效

我正在使用$ 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中了还是我需要自己实现它?

angularjs angularjs-resource

18
推荐指数
2
解决办法
6956
查看次数

懒惰的评价在Lodash不起作用

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/

javascript lodash

6
推荐指数
1
解决办法
1589
查看次数

自定义权限检查失败时的错误消息

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": "您无权执行此操作。" }

我想更改上面的“详细信息”部分,提供对开发人员更友好的错误消息。我怎么能做到这一点,确保每次权限检查失败时都显示消息?

python django django-rest-framework

5
推荐指数
1
解决办法
1569
查看次数

使用 Django Rest Framework 在 Pre_Save 中引发验证错误

我在使用 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 的消息。

django django-rest-framework

3
推荐指数
1
解决办法
2585
查看次数

在函数内部变换JavaScript数组

在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 arrays

3
推荐指数
1
解决办法
2723
查看次数

Javascript中的浮点运算

可能重复:
JavaScript的数学是否被破坏?

在过去的几天里,我刚刚开始使用Javascript,我注意到一些看似非常特殊的东西.当我将一些数字加在一起时,我最终会得到一个略微错误的答案.

4.99 + 0.98 = 5.970000000000001

为什么会这样?

javascript

-3
推荐指数
1
解决办法
170
查看次数