1

たとえば、同期機能を動的に変更する方法はありますか。ドキュメントにフィールド ID があり、特定の ID に属するドキュメントを取得したいので、ここでは ID を変数にします。例えば。以下は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 にユーザー固有のデータを取得する必要があるアプリがあります。My CouchBase Server には 20000 個のドキュメントがあり、ユーザーごとに 5 個のドキュメントがあるため、(20000/5) 4000 人のユーザーがいます。したがって、ユーザーがアプリにログインすると、CouchBase サーバーは、20000 個のドキュメントすべてではなく、そのユーザーに関連する 5 つのドキュメントのみを送信する必要があります。

編集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());
    }*/
    }
4

1 に答える 1