【问题标题】:Can PouchDB bulkDocs trigger the "change" event just once?PouchDB bulkDocs 可以只触发一次“更改”事件吗?
【发布时间】:2017-04-14 06:30:06
【问题描述】:

我正在开始使用 PouchDB,我正在使用 BulkDocs 函数,它用于在数据库中插入批量数据,记录在这里:https://pouchdb.com/guides/bulk-operations.html

效果很好,但是,正如文档本身所说,它与调用一系列链式 put() 函数相同。

问题在于我还使用了 couchdb 的更改函数来监听数据库中的更改并更新 UI,如下:

db.changes({
      since: 'now',
      live: true,
  }).on('change', refreshCarList);

当我调用批量更新时,它会多次触发“更改”事件(每个更新的文档一次),并且取决于批量大小,每次保存都会触发数百甚至数千次。这会导致多次调用回调,冻结我的 UI。

我的问题是:有没有办法/选项/hack 只进行一次批量更新调用更改?

【问题讨论】:

  • This 可能会有所帮助。
  • 一个bulkDocs 操作更新了多个文档。更改响应针对单个文档。您希望如何处理多个更新的单个更改事件?
  • 我希望更改不会响应单个文档,而是响应单个查询。
  • @raphadko:不过,这并不能真正回答我的问题。您希望多个文档的change 事件看起来像什么? (以及您将如何处理多种事件类型——例如某些文档成功同步,而其他文档有错误)在 PouchDB 或 CouchDB 中没有相应的格式。您似乎要求从根本上更改“更改”提要格式。还是我错过了什么?
  • 老实说,我不知道解决方案会是什么样子,我指出同时使用更改和 bulkDocs 时可能会出现性能问题,特别是在更改更新 UI 时。正如@Jason Jarrett 指出的那样,也许关闭侦听器然后再进行单一更新可以解决这个问题,有点骇人听闻,但可以完成工作。

标签: javascript pouchdb


【解决方案1】:

您可以考虑在调用批量操作之前关闭侦听器,或者在构建操作完成之前设置一个标志(侦听器用来忽略),然后在最后调用一次。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-15
    • 2011-02-27
    • 1970-01-01
    相关资源
    最近更新 更多