#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
сработало бы, но я не совсем уверен.
Надеюсь, это поможет!