2017-07-07 36 views
0

我想将最后一个修订版本从couchDB复制到pouchDB,但是它将所有的转换都转移到了doc中。初始例如:如何将有用的数据从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"); 
    }... 

复制代码:

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); 
      }) 
    } 

在的console.log进展结果( '用户复制状态',进度);

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 604转换为25Kb的1个文档。考虑通过2g/3g连接传输的25kb x 603无用数据,并帮助我仅转发有用的数据。

OBS:Fauxton紧凑&清洁是这个过程之前使用

+0

您是否对PouchDB进行了与CouchDB同步的更改?或者所有更改都是在CouchDB中发起的,并且PouchDB的副本是只读的? – Flimzy

+0

双方都有变化,大部分变化都来自CouchDB –

+0

在这种情况下,额外的转速不是无用的数据;他们用于解决冲突。 – Flimzy

回答

0

您可以使用类似pouchdb-load

装入文档进的CouchDB/PouchDB从转储文件

然后,同步像往常一样,鲍勃是你的叔叔。

+0

谢谢您的提示。我会测试它 –

+0

不幸的是,这是一种解决方法,因为我不希望加载转储文件,但加载了couchDB文档。为了用pouchdb-load实现这一点,我需要在包含它之后从这个结构(CouchDB/PouchDB)中加载一个文件。 –

相关问题