问题标签 [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 - 如何将多个视图更新合并到一个 ListView 中?

我在多个 nsf 数据库中有多个视图,我想对其执行 view.update、构建记录数组并在一个 ListView 中显示结果。就性能而言,最好的方法是什么?想到的一个想法是:

  1. 对视图执行 .update() 方法
  2. 在每次更新的回调中,将记录推送到(全局?)数组
  3. 将数组设置为 ListView

我是否正确地考虑了这一点?Domino To Go 中是否有这样做的示例?

感谢您的任何提示。

0 投票
1 回答
35 浏览

dominotogo - NotesView.update - syncModifiedOnly

我有几个关于 NotesView.update 功能的问题。

我目前在我的 domino 服务器上有一个 Notes 数据库,它通过同步代理从其他几个数据库中提取信息,使其成为我的 DTG 移动应用程序的主要数据源。

我的 Notes 同步代理从与 Domino To Go 同步的主 Notes 数据库中删除/硬删除文档。

当我在设备上的 DTG 视图中的文档在 NotesView.update 期间不再位于服务器数据库中时,它们是否也会自动删除,或者它们是否仍然存在于 DTG 视图中,而忽略了它们的父级已被删除的事实?

我问的原因是我想设置 syncModifiedOnly 参数,并且文档描述了需要在我的 Notes 视图末尾添加一个 $dtgIsRemoved 列以加快速度。

还描述了需要向列添加公式以使 DTG 视图了解我要删除基础 DTG 文档。

话虽如此,这是否意味着:

  1. 我不应该在我的同步代理中或从 NotesDatabase 中删除 NotesDocuments。

  2. 将它们保留在 Notes 视图中并在 $dtgIsRemoved 列中创建一个公式,如果我希望在 NotesView.update 期间删除 DTG 文档,该公式将返回“1”?

最初我认为删除服务器数据库上的 Notes 文档会在 NotesView.update 期间自动从 DTG 中删除该文档,而无需用户干预 cleanupCallback。

有点不清楚 $dtgIsRemoved 如何帮助我加快更新速度。

最终我想加快我的view.update。

我有 5 个视图,它们在回调和 view.updates 中耦合并显示进度条。

尽管在我的 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. 如果为真,则同步所有字段/列。

  8. 在同步结束时,运行清理过程以实际删除标记为删除或未在父 NotesDatabase 中找到的文档。

如果 NotesView.update 从 DTG 视图中删除不在源数据库视图中的文档,仍然看不到 $dtgIsRemoved 列的意义。从源视图中删除它们将发生在 Notes 视图选择公式中或在像我这样的同步代理中的直接 NotesDocument.Remove 中。

  • 结核病