Репликация с фильтром CouchDB с параметрами

#json #database #filter #couchdb #replication

#json #База данных #Фильтр #couchdb #репликация

Вопрос:

Я пытаюсь настроить отфильтрованную репликацию в CouchDB:

Фильтр, который я использую, следующий:

 function(doc, req){ 

   if(doc._id == req.query.myid){ 
      return true;
   } 

   return false;
}
 

Чтобы протестировать фильтр, я делаю этот вызов:

 GET /people/_changes?filter=data/mobileamp;query_params={"myid": "1"}
 
  • Имя базы данных — «люди»
  • Проектный документ с фильтром — «_design / data»
  • И имя фильтра — «мобильный»

И я получаю это как результат:

 {"results":[

],
"last_seq":126}
 

когда мне нужно было получить документ с идентификатором, равным «1».

Кто-нибудь может сказать мне, где я ошибаюсь?

Комментарии:

1. можете ли вы привести пример того, как выглядит ваш документ?

Ответ №1:

Я думаю, проблема в том, что вы запрашиваете отфильтрованный список изменений. Поскольку их нет, результат устанавливает его пустым. Репликация принимает post только запросы. Посмотрите пример в couch db wiki.

{"source":"http://example.org/example-database","target":"http://admin:password@127.0.0.1:5984/example-database", "filter":"myddoc/myfilter", "query_params": {"key":"value"}}

Ответ №2:

Попробуй это:

 GET /people/_changes?filter=data/mobileamp;myid="1"
 

Объект query_params содержит все параметры , которые вы задаете с помощью GET . Вероятно, это тоже myid=1 сработало бы, но я не совсем уверен.

Надеюсь, это поможет!