У меня есть простые экземпляры PouchDB один для локального браузера и один удаленный. У меня есть документ design, который принимает фильтр, когда я выполняю синхронизацию, он сохраняется как представление.
var localDB = new PouchDB('mydb');
var remoteDB = new PouchDB('http://anna:secret@127.0.0.1:5984/db');
Когда я выполняю ниже, он сохраняется как вид
localDB.sync(remoteDB)
{
"_id": "_design/sync",
"_rev": "2-f6db221d90157a99f4e6e9e6e27ffe85",
"views": {
"by_user": {
"map": "function (doc) {n emit(doc._id, 1);n}"
}
}
}
когда это написано как ниже на моем клиентском скрипте
localDB.put({
_id : '_design/sync',
filters: {
by_user : function(doc, req) {
return doc._id.indexOf(req.query.user) > 0;
}.toString()
}
}).then().catch(function(err) {});
Итак, почему я не могу видеть фильтры в моем документе при просмотре в CouchDB ?
Вы сохраняете два разных документа, один с видом (в CouchDB) и один с фильтром (в PouchDB).
Эмпирическое правило, если вы храните документ с тем же идентификатором, но другим содержимым, вы получите конфликты при синхронизации (репликации). Если у вас есть конфликт с проектным документом, то в основном одна ревизия (выбранная довольно произвольно) будет «живой», и один будет инертным, вроде старой ветви Git, о которой больше никто не заботится.
Другими словами (если я правильно вас понял), вы, вероятно, должны попытаться сохранить идентичный документ в CouchDB и PouchDB. (Простой способ сделать это-сохранить документ в PouchDB, а затем скопировать его в CouchDB или наоборот.)