定期的に(部分的に)更新される一連のドキュメントを含むテーブルがあります。
私が本質的にやろうとしているchanges
のは、これらのドキュメントのそれぞれに対する最新の N 個の変更を格納する別のテーブル (以下で呼び出されます) を作成することです。
したがってtable.changes()
、テーブルのすべての変更を取得し、必要な差分情報を計算し (以下で呼び出されdiffentry
ます)、その情報を他のテーブルの配列に追加します。
changes.get(doc_id).update({
'diffs': R.row['changes'].prepend(diffentry)
}).run()
このトリッキーなビットは、diffs
配列のサイズを制限する方法ですか?
delete_at()
配列から 1 つまたは複数の項目を削除できる配列メソッドがあります。これは、次のように「総当たり」で呼び出すことができます。
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
私が見つけたものはありません...この種のことをうまく行う方法についてのアイデアはありますか?