我已經(jīng)創(chuàng)建了一個帶有拉取和推送選項的復制器,但問題是我需要從 Couchbase 服務(wù)器獲取一些文檔而無法推送。誰能幫我解決這個問題?注意:我使用的是 couchbase lite 2.5、couchbase server 6.0 和 sync gateway 2.5我當前的推拉復制器public static void startPushAndPullReplicationForCurrentUser(String username, String password) { Log.e("Replication", "startPushAndPullReplicationForCurrentUser"); URI url = null; try { url = new URI(mSyncGatewayEndpoint); } catch (URISyntaxException e) { e.printStackTrace(); } ReplicatorConfiguration config = new ReplicatorConfiguration(database, new URLEndpoint(url)); config.setReplicatorType(ReplicatorConfiguration.ReplicatorType.PUSH_AND_PULL); config.setContinuous(true); config.setAuthenticator(new BasicAuthenticator(username, password)); Replicator replicator = new Replicator(config); replicator.addChangeListener(new ReplicatorChangeListener() { @Override public void changed(ReplicatorChange change) { if (change.getReplicator().getStatus().getActivityLevel().equals(Replicator.ActivityLevel.IDLE)) { Log.e("Replication Comp Log", "Schedular Completed"); } if (change.getReplicator().getStatus().getActivityLevel().equals(Replicator.ActivityLevel.STOPPED) || change.getReplicator().getStatus().getActivityLevel().equals(Replicator.ActivityLevel.OFFLINE)) { // stopReplication(); Log.e("Rep schedular Log", "ReplicationTag Stopped"); } } }); replicator.start();}所有數(shù)據(jù)庫都附加到推拉復制器,但這是錯誤的。
2 回答

慕神8447489
TA貢獻1780條經(jīng)驗 獲得超1個贊
如果您希望復制器不推送,請使用 config.setReplicatorType(ReplicatorConfiguration.ReplicatorType.PULL);
PUSH_AND_PULL 代替。我們在我的項目中使用它,我們希望服務(wù)器在推送到數(shù)據(jù)庫之前驗證記錄(驗證對于他們簡單的驗證機制來說太復雜了——它需要我們獲取其他記錄,而該機制不允許)。
無法對某些文檔進行雙向同步,但對其他文檔進行單向同步。這是一個全有或全無的設(shè)置。如果您需要,您可以做的是將所有內(nèi)容都放在 PULL 中,并且當您更改要推送的文檔時,通過您自己的端點或直接同步網(wǎng)關(guān) API 調(diào)用手動將其推送到服務(wù)器。但是,這確實存在使數(shù)據(jù)庫不同步的風險,尤其是在離線文檔經(jīng)常更改的情況下。

阿波羅的戰(zhàn)車
TA貢獻1862條經(jīng)驗 獲得超6個贊
在 2.5 中,您可以使用復制過濾器來做到這一點。在您的情況下,設(shè)置一個推拉復制器并定義一個推送復制過濾器以過濾掉您不想推送的文檔(僅限本地)。
添加回答
舉報
0/150
提交
取消