【发布时间】:2019-04-07 10:23:15
【问题描述】:
我在 React 中编写了一个 Electron 应用程序,它使用与远程 CouchDB 本地同步的 PouchDB。我使用 Redux 进行状态管理,想了解 CRUD 的最佳实践是什么?
我有一个要求(这就是为什么我不确定要使用的最佳模式的原因)是当其他人远程更改某些内容时应用程序需要更新。
考虑到这一点,到目前为止我已经尝试了 2 种模式。
-
使用
DB.changes()收听changes,它将获取每次更改的所有数据(受中间件限制,但可以使用redux-saga)。这种方法导致用户交互和加载到应用程序中的新数据之间的周转时间明显延长,因为用户会更新,然后显示“更新成功”消息,最终显示“数据更新”消息。当然,在这些点中的每一个点都会发送一些动作,这会影响 UI 渲染并增加糟糕的用户体验。DB.changes()方法可以返回我没有在这个方法中指定的更改文档DBChanges = DBChanges.changes({ since: 'now', live: true, include_docs: false }).on('change', change => { // handle change fetchAllDocs().then(setAllDocsInApplication) }); -
收听changes 和
DB.changes(),包括更改后的文档。这些更改可以是远程的,也可以来自应用程序内的用户交互。在每次更改时,查看返回的文档并根据更改更改应用程序状态。这使得整个周期时间更短,但是当我改变获取的数据时,这感觉像是一个糟糕的模式。DBChanges = DBChanges.changes({ since: 'now', live: true, include_docs: true }).on('change', change => { // handle change if(change.deleted) handleRemove(change.doc) if(change..doc._rev.split("-")[0] === "1") handleNewDoc(change.doc) handleUpdateDoc(change.doc) });
那么我想知道的是,对于 CRUD 来说,实时更新的最佳模式是什么?
【问题讨论】: