2016-12-02 4 views
1

У меня есть couchdb на стороне сервера и pouchdb для моего мобильного приложения. Я хочу, чтобы каждый пользователь получал свои собственные данные на основе ссылочного номера (ref_no). Я уже пытался его фильтровать, но синхронизация данных с couchdb отсутствует. Я следую шагу из документации pouchdb/couchdb. Но я не знаю, правильный или нет правильный шаг. Прошу вас, если я ошибусь. Ниже мой код на стороне клиента.Как фильтровать репликацию между pouchdb и couchdb

constructor(public http: Http, public settingProvider:SettingProvider) { 

    this.db = new PouchDB('task'); 

} 


initializeRemote(url,ref_no){ 

    this.remote = url + '/task'; 

    let options = { 
    live: true, 
    retry: true, 
    filter:'task/byRef_no', 
    query_params: {'ref_no':ref_no} 
    }; 

    this.db.sync(this.remote, options) 
    .on('change', function(change){ 
     console.log('InspectionTask provider change!', change); 
    }) 
    .on('paused', function(info){ 
     console.log('InspectionTask provider paused!', info); 
    }) 
    .on('active', function(info){ 
     console.log('InspectionTask provider active!', info); 
    }) 
    .on('error', function(err){ 
     console.log('InspectionTask provider error!', err) 
    }); 
} 

И это фильтр на стороне сервера.

{ 
    _id: '_design/task', 
    filters: { 
    myfilter: function (doc, req) { 
     return doc.ref_no === req.query.ref_no; 
    } 
    } 
} 

ответ

1

Фильтр, который вы указали в конфигурации репликации PouchDB, находится не в документе дизайна.

Вы пытаетесь отфильтровать: filter:'task/byRef_no'.

Собственно, ваше имя фильтра myfilter.

Вы должны иметь что-то, глядя, как это:

let options = { 
    live: true, 
    retry: true, 
    filter:'task/myfilter', 
    query_params: {'ref_no':ref_no} 
    }; 
+0

Я уже изменить название фильтра, но тот же результат. Я все еще не могу синхронизировать данные с фильтром. Если я удалю фильтр, все будет работать нормально. – Akmal

+0

И ваша функция фильтра - строка справа? –

+0

Мне жаль. Я уже сделал это с небольшими изменениями и с вашей помощью. благодаря – Akmal