默认情况下,在线模式下,PouchDB使用remoteDB而不是本地数据库实例,而不是处于离线模式

时间:2018-01-30 09:15:43

标签: replication pouchdb

我在CouchDB数据库服务器端保存了附件,我希望使用PouchDB在客户端应用程序上进行复制。

在我处理应用程序逻辑的app.js文件中,这位于顶部:

 import PouchDB from 'pouchdb'
 var remoteDB = new PouchDB('http://dev04:5984/documentation')
 var db = new PouchDB('documentation')
 remoteDB.replicate.to(db).on('complete', function () {
     // yay, we're done!
 }).on('error', function (err) {
     // boo, something went wrong!
 });

当我在防火墙中关闭对端口5984的访问时,我的文件将无法再被检索,并且我将无法访问我的index.html文件。

我期待的是数据库的所有内容' documentaion'要复制到我的本地浏览器存储 - 包括pdf等 - 这样当我关闭端口5984然后点击刷新时,我仍然可以访问内容。我究竟做错了什么? (参见编辑 - 我发现数据库实际上正在复制,但本地实例并不是首选)

编辑:

我已经确定数据库实际上正在被复制,但本地存储只是首选'当浏览器处于脱机模式时。因此,当我在在线模式下刷新时,如果端口5984被阻止,则找不到该页面。但是当我在离线模式下执行相同操作时(当然,一旦内容已经缓存),就可以检索内容。

要求我的用户始终在离线模式下工作,这不是一个理想的解决方案。有没有办法让本地PouchDB实例成为默认设置,即使在在线模式下也是如此?

1 个答案:

答案 0 :(得分:0)

我首先写信给本地数据库" sync"如果它可用,那就到远程数据库。

我使用app.cache提供离线功能,并将应用配置为先运行"离线#34;

我上周读到Apple最终在Safari中实现了Service Workers,所以我现在也在考虑实现它。