4

定期的に(部分的に)更新される一連のドキュメントを含むテーブルがあります。

私が本質的にやろうとしている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私が見つけたものはありません...この種のことをうまく行う方法についてのアイデアはありますか?

4

1 に答える 1