問題タブ [dominotogo]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
dominotogo - 複数のビューの更新を 1 つの ListView に結合する方法は?
複数の nsf データベースに複数のビューがあり、それに対して view.update を実行し、レコードの配列を作成し、結果を 1 つの ListView に表示します。パフォーマンスに関してこれを行うための最良の方法は何でしょうか? 頭に浮かんだ1つのアイデアは次のとおりです。
- ビューで .update() メソッドを実行する
- 各更新のコールバックで、レコードを (グローバル?) 配列にプッシュします
- 配列を ListView に設定する
私はこれについて正しく考えていますか?Domino To Go でこれを行う例はありますか?
ヒントをありがとう。
dominotogo - NotesView.update - syncModifiedOnly
NotesView.update 機能に関していくつか質問があります。
現在、私のドミノ サーバーには単一の Notes データベースがあり、同期エージェントを介して他のいくつかのデータベースから情報を取得し、それを DTG モバイル アプリのプライマリ データ ソースにしています。
私の Notes 同期エージェントは、Domino To Go が同期するプライマリ Notes データベースからドキュメントを削除/ハード削除します。
NotesView.update 中にサーバー データベースに存在しなくなった場合、デバイス上の DTG ビュー内の文書も自動的に削除されますか? それとも、親が削除されたことに気づかずに DTG ビューに残りますか?
私が尋ねる理由は、syncModifiedOnly パラメータを設定したいからです。ドキュメントには、処理を高速化するために Notes ビューの最後に $dtgIsRemoved 列を追加する必要があると記載されています。
また、基になる DTG ドキュメントを削除したいことを DTG ビューに理解させるために、列に式を追加する必要があることも説明しています。
そうは言っても、それは次のことを意味しますか?
同期エージェントまたは NotesDatabase から NotesDocuments を削除するべきではありません。
それらを Notes ビューに残し、$dtgIsRemoved 列に式を作成します。この式は、NotesView.update 中に DTG 文書を削除したい場合に「1」を返します。
当初、サーバー データベースで Notes ドキュメントを削除すると、CleanupCallback でユーザーが介入しなくても、NotesView.update 中にドキュメントが DTG から自動的に削除されると考えていました。
$dtgIsRemoved が更新のスピードアップにどのように役立つかについては、少し不明です。
最終的には、view.update をスピードアップしたいと考えています。
コールバックとview.updatesに結合され、プログレスバーを表示する5つのビューがあります。
私の iOS デバイスで実行すると非常に一貫性がありませんが、合計ドキュメント数は約 73000 で、60 秒かかることもあれば、180 ~ 200 秒かかることもあります。
情報の表示は高速で、SQL を使用した検索は非常に高速です。この段階で問題になるのは NotesView.update だけです。
NotesView.update - DTG ビュー内の各ドキュメントの DTG ビュー内のすべてのエントリを実行します。
$dtgIsRemoved 列を確認し、= "1" の場合、DTG ビューからドキュメントを削除します
親 NotesDatabase で対応する NotesDocument を取得する
ハンドルがない場合は、DTG ドキュメントに削除のマークを付けます
それ以外の場合は、syncModifiedOnly パラメータを確認してください
true に設定されている場合は、最後の同期日付パラメーターを確認します
NotesDocument の最終更新日が >= last sync であることを確認してください
true の場合、すべてのフィールド / 列を同期します。
同期の最後に、クリーンアップ プロセスを実行して、削除のタグが付けられたドキュメント、または親 NotesDatabase で見つからなかったドキュメントを実際に削除します。
NotesView.update がソース データベース ビューにない DTG ビューから文書を削除する場合、$dtgIsRemoved 列のポイントを確認できません。ソース ビューからそれらを削除することは、Notes ビューの選択式または直接の NotesDocument.Remove で、私のような同期エージェントで行われます。
- 結核