最後のリビジョンのみをcouchDBからpouchDBに複製しようとしていますが、すべてのrevsを持つ転送文書です。初期の例:CouchDBからPouchDBに有用なデータのみを転送する方法
var replicationOptions = {
doc_ids: null
};
this.$get = function (pouchDB, arrayUtils, $rootScope, modelUtils,appConfig) {
function initDB() {
userLocalDB = pouchDB("mobile_users", {
revs_limit: 1,
auto_compaction: true,
adapter: 'cordova-sqlite',
iosDatabaseLocation: 'Library',
androidDatabaseImplementation: 2
});
userRemoteDB = pouchDB(appConfig.couchDBServerUrl+"mobile_users", {skipSetup: true});
userRemoteDB.login("mobile", "fakepass");
}...
レプリケーションコード:はconsole.logの進歩の
function startReplication(username) {
replicationOptions.doc_ids = [_prefixId + username];
console.log("replicationOptions", replicationOptions)
return userRemoteDB.replicate.to(userLocalDB, replicationOptions).$promise
.then(null, null, function (progress) {
console.log('user replication status', progress);
})
.then(function (result) {
console.log('user replication resolved with', result);
return true
})
.catch(function (reason) {
console.log('user replication exception', reason);
return startReplication(username);
})
}
結果( 'ユーザーのレプリケーション状態'、進捗状況)。
user replication status Object {change: Object}
change: Object
doc_write_failures: 0
docs: Array(604)
docs_read: 604
docs_written: 604
errors: Array(0)
last_seq: 452349
ok: true
start_time: "2017-07-07T18:37:34.353Z"
私は長い間答えを探していますが、どのような解決策も効果的でした。私はcouchDBからの転送を望んでいない。 2GB/3gの接続で25kb x 603本の無駄なデータが転送され、有用なデータのみを転送するのに役立ちます。
OBS:Fauxtonコンパクト&クリーンは、このプロセスの前に使用された
CouchDBに同期するPouchDBを変更しますか?あるいは、すべての変更はCouchDBから始まり、PouchDBのコピーは読み取り専用ですか? – Flimzy
両サイドに変更があります。ほとんどの変更はCouchDB –
からのものです。その場合、追加の回転数は無駄なデータではありません。彼らは紛争解決に使用されます。 – Flimzy