【发布时间】:2017-01-13 22:34:41
【问题描述】:
上下文
我使用 PouchDB,并且有一个使用 indexedDb 的 localDB。我用这个函数不断地把这个本地数据库复制到一个远程数据库(CouchDB):
function replLocalToRemote() {
this.meta.localDB.replicate.to(this.meta.remoteDB, {
// Live: replication occurs as the changes are detected
live: true,
retry: true,
}).on('paused', function (info) {
console.log('paused', info);
// replication was paused, usually because of a lost connection
}).on('change', function (change) {
console.log('change', change);
// yo, something changed!
}).on('active', function (info) {
console.log('active', info);
// replication was resumed
}).on('error', function (err) {
alert('replication failed. Retry... ', err);
// totally unhandled error (shouldn't happen)
});
}
它运行良好,但是当设备上的数据过多时会出现问题。尤其是在 IOS 上,Safari 会不断打开弹出窗口以要求更多数据存储(从 5Mo 开始)。
问题
所以我想在将 localDB 复制到 remoteDB 时清理它。例如,一旦远程文件在本地就删除它并继续复制,即使远程数据多于本地数据。
这可能吗?
【问题讨论】:
-
不是您问题的真正答案,但您可以通过使用 SQLite 数据库而不是 IndexedDB 和 WebSQL 来避免弹出窗口和存储短缺问题。请参阅 Cordova/PhoneGap 的 SQLite 插件 部分 here。
-
@Phonolog 很有趣,但我的应用不是 Cordova/PhoneGap 应用。
-
嗯,另一个想法:一旦数据库中的数据过多(或者假设每天/每周/每月)删除数据库并创建一个新数据库。将新的复制到您的远程数据库...
标签: javascript couchdb pouchdb