Есть ли способ динамически изменять функцию синхронизации, например. Допустим, у моих документов есть идентификатор поля, и я хочу получить документы, принадлежащие определенному идентификатору, поэтому идентификатор — это моя переменная здесь. например. ниже функция синхронизации для ID=4
"sync":
function (doc) {
if(doc.ID==4){
channel (doc.channels);
}
else{
throw({forbidden: "Missing required properties"});
}
},
Теперь это будет работать только для ID = 4. Как я могу сделать свою функцию синхронизации динамической. Есть ли способ предоставить аргументы моей функции синхронизации?
EDIT 1 Добавлен вариант использования
Итак, мой вариант использования такой. У меня есть приложение, в котором, когда пользователь входит в систему, мне нужно получить пользовательские данные с CouchBase Server на CouchBase lite. На моем сервере CouchBase у меня есть 20000 документов, и для каждого пользователя есть 5 документов, поэтому у меня (20000/5) 4000 пользователей. Итак, когда пользователь входит в мое приложение, мой сервер CouchBase должен отправлять только 5 документов, связанных с этим пользователем, а не все 20000 документов.
ИЗМЕНИТЬ 2
Вот как я реализовал репликацию
private URL createSyncURL(boolean isEncrypted){
URL syncURL = null;
String host = "http://172.16.25.108";
String port = "4986";
String dbName = "sync_gateway";
try {
//syncURL = new URL("http://127.0.0.1 :4986/sync_gateway");
syncURL = new URL(host + ":" + port + "/" + dbName);
} catch (Exception me) {
me.printStackTrace();
}
Log.d(syncURL.toString(),"URL");
return syncURL;
}
private void startReplications() throws CouchbaseLiteException {
Log.d(TAG, "");
Replication pull = database.createPullReplication(this.createSyncURL(false));
Replication push = database.createPushReplication(this.createSyncURL(false));
Authenticator authenticator = AuthenticatorFactory.createBasicAuthenticator("an", "1234");
pull.setAuthenticator(authenticator);
//push.setAuthenticator(authenticator);
List<String> channels1 = new ArrayList<String>();
channels1.add("u1");
pull.setChannels(channels1);
pull.setContinuous(true);
// push.setContinuous(true);
pull.start();
//push.start();
if(!push.isRunning()){
Log.d(TAG, "MyBad");
}
/*if(!push.isRunning()) {
Log.d(TAG, "Replication is not running due to " +push.getLastError().getMessage());
Log.d(TAG, "Replication is not running due to " +push.getLastError().getCause());
Log.d(TAG, "Replication is not running due to " +push.getLastError().getStackTrace());
Log.d(TAG, "Replication is not running due to " +push.getLastError().toString());
}*/
}