我有一张桌子,上面有一堆定期(部分)更新的文档。
我实际上想要做的是创建另一个表(changes
下面称为)存储每个文档的最新 N 更改。
因此,我正在table.changes()
获取表上的所有更改,计算我想要的差异信息(diffentry
在下面调用)并将该信息添加到另一个表中的数组中:
changes.get(doc_id).update({
'diffs': R.row['changes'].prepend(diffentry)
}).run()
这个棘手的地方是如何限制diffs
数组的大小?
有一个数组方法delete_at()
可以从数组中删除一个或多个项目,我可以“蛮力”调用,例如:
delete_at(diff_limit, diff_limit + 10000)
并忽略任何错误(疯狂的上限只是妄想症)。但是感觉有点脏……
我认为更好,更好的方法是过滤大于限制的数组并删除超出的位。伪:
changes.get(doc_id).filter(R.row['diffs'].length > diff_limit).update({
'diffs': R.row['diffs'].delete_at(diff_limit, R.row['diffs'].length - 1)
}).run()
但是,唉,length
我发现没有……关于如何以一种好的方式做这种事情的任何想法?