我正在研究一个使用事件监听器的D3项目,每隔几毫秒就会调用一次事件监听器来更新/动画屏幕上圆圈的位置.
它从函数startForces()开始调用一次以激活D3力,然后我们将它传递给圆圈.
当回调函数(勾选)位于startForces()范围之外时,该函数似乎只调用一次,并且圆圈在页面上显示为静态.(见顶级代码)
但是,当回调函数(勾选)位于startForces()的范围内时,一切都按预期工作,并且圆圈显示为动画.(BOTTOM CODE CHUNK)
我试图理解为什么javascript以这种方式工作.为什么顶级代码不起作用,底部代码有效?
var ticked = function(circles){
circles.attr('cx', function(d) { return d.x })
.attr('cy', function(d) { return d.y })
}
var startForces = function(data, circles) {
simulation.nodes(data)
.on('tick', ticked(circles))
}
Run Code Online (Sandbox Code Playgroud)
=====
var startForces = function(data, circles) {
simulation.nodes(data)
.on('tick', ticked)
function ticked(){
circles.attr('cx', function(d) { return d.x })
.attr('cy', function(d) { return d.y })
}
}
Run Code Online (Sandbox Code Playgroud)
为什么不同?
我正在尝试使用表 B 中相关记录的计数来批量更新表 A 中的所有记录。
我想做这样的事情:
from django.db.models import Subquery, OuterRef, Count
table_b_subquery = TableB.objects.filter(a_id=OuterRef('id'))
TableA.objects.all().update(table_b_count=Count(Subquery(table_b_subquery)))
Run Code Online (Sandbox Code Playgroud)
这相当于这种非批量方法:
# Non-Bulk
for record in TableA.objects.all():
record.table_b_count = record.table_b_set.count()
Run Code Online (Sandbox Code Playgroud)
我尝试批量方法时遇到的错误是:
*** django.core.exceptions.FieldError: Aggregate functions are not allowed in this query
Run Code Online (Sandbox Code Playgroud)
如何在批量更新中对相关记录进行看似简单的计数?理想情况下,我也想对表 B 的计数应用一个简单的字段过滤器。
我正在尝试按照 docker 文档中的说明备份我的卷:https : //docs.docker.com/storage/volumes/#backup-restore-or-migrate-data-volumes
我正在运行带有卷路径的命令:
docker run --rm --volumes-from MYCONTAINER -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /var/lib/docker/volumes/MYCONTAINER_VOLUME
Run Code Online (Sandbox Code Playgroud)
...并且还尝试仅使用我的卷名
docker run --rm --volumes-from MYCONTAINER -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar MYCONTAINER_VOLUME
Run Code Online (Sandbox Code Playgroud)
但无论我收到什么错误,如: tar: MYCONTAINER_VOLUME: Cannot stat: No such file or directory
该卷创建并链接到容器,docker-compose并使用该卷的本地驱动程序。
当我运行时,docker volume ls我得到:
DRIVER VOLUME NAME
local MYCONTAINER_VOLUME
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我我做错了什么吗?