我已經創建了一個帶有拉取和推送選項的復制器,但問題是我需要從 Couchbase 服務器獲取一些文檔而無法推送。誰能幫我解決這個問題?注意:我使用的是 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();}所有數據庫都附加到推拉復制器,但這是錯誤的。
2 回答

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