我已经创建了一个带有拉取和推送选项的复制器,但问题是我需要从 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
提交
取消