問題タブ [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.

0 投票する
1 に答える
35 参照

dominotogo - 複数のビューの更新を 1 つの ListView に結合する方法は?

複数の nsf データベースに複数のビューがあり、それに対して view.update を実行し、レコードの配列を作成し、結果を 1 つの ListView に表示します。パフォーマンスに関してこれを行うための最良の方法は何でしょうか? 頭に浮かんだ1つのアイデアは次のとおりです。

  1. ビューで .update() メソッドを実行する
  2. 各更新のコールバックで、レコードを (グローバル?) 配列にプッシュします
  3. 配列を ListView に設定する

私はこれについて正しく考えていますか?Domino To Go でこれを行う例はありますか?

ヒントをありがとう。

0 投票する
1 に答える
35 参照

dominotogo - NotesView.update - syncModifiedOnly

NotesView.update 機能に関していくつか質問があります。

現在、私のドミノ サーバーには単一の Notes データベースがあり、同期エージェントを介して他のいくつかのデータベースから情報を取得し、それを DTG モバイル アプリのプライマリ データ ソースにしています。

私の Notes 同期エージェントは、Domino To Go が同期するプライマリ Notes データベースからドキュメントを削除/ハード削除します。

NotesView.update 中にサーバー データベースに存在しなくなった場合、デバイス上の DTG ビュー内の文書も自動的に削除されますか? それとも、親が削除されたことに気づかずに DTG ビューに残りますか?

私が尋ねる理由は、syncModifiedOnly パラメータを設定したいからです。ドキュメントには、処理を高速化するために Notes ビューの最後に $dtgIsRemoved 列を追加する必要があると記載されています。

また、基になる DTG ドキュメントを削除したいことを DTG ビューに理解させるために、列に式を追加する必要があることも説明しています。

そうは言っても、それは次のことを意味しますか?

  1. 同期エージェントまたは NotesDatabase から NotesDocuments を削除するべきではありません。

  2. それらを 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 ビュー内のすべてのエントリを実行します。

  1. $dtgIsRemoved 列を確認し、= "1" の場合、DTG ビューからドキュメントを削除します

  2. 親 NotesDatabase で対応する NotesDocument を取得する

  3. ハンドルがない場合は、DTG ドキュメントに削除のマークを付けます

  4. それ以外の場合は、syncModifiedOnly パラメータを確認してください

  5. true に設定されている場合は、最後の同期日付パラメーターを確認します

  6. NotesDocument の最終更新日が >= last sync であることを確認してください

  7. true の場合、すべてのフィールド / 列を同期します。

  8. 同期の最後に、クリーンアップ プロセスを実行して、削除のタグが付けられたドキュメント、または親 NotesDatabase で見つからなかったドキュメントを実際に削除します。

NotesView.update がソース データベース ビューにない DTG ビューから文書を削除する場合、$dtgIsRemoved 列のポイントを確認できません。ソース ビューからそれらを削除することは、Notes ビューの選択式または直接の NotesDocument.Remove で、私のような同期エージェントで行われます。

  • 結核