Я создаю мобильное приложение, используя Ionic Framework. Приложение представляет собой простой корпоративный «каталог сотрудников», использующий PouchDB для хранения и синхронизации с моей базой данных.
В моем приложении есть функция обновления по запросу, которая запускает одностороннюю репликацию из CouchDB в PouchDB в приложении. Это работает отлично, но у меня есть одна маленькая загвоздка...
В приложении есть функция «список друзей», где пользователь может провести сотрудника из списка, чтобы добавить его в меню быстрого доступа. Когда они проводят пальцем по сотруднику, приложение добавляет свойство favorite: true
в документ PouchDB. Это прекрасно работает до тех пор, пока этот конкретный документ не будет реплицирован. Как и следовало ожидать, добавленное свойство favorite: true
стирается, поскольку оно не синхронизировано с CouchDB (я хочу сохранить это свойство локальным).
Мой вопрос: есть ли способ сделать одностороннюю репликацию, но сохранить часть документа? Я бы хотел, чтобы база данных CouchDB реплицировала весь документ, но оставила свойство favorite
нетронутым.
Я попытался использовать решение с localStorage и сравнить сохраненный массив с идентификатором документа, но это довольно беспорядочно и не очень эффективно.
Интересно услышать, что другие, возможно, сделали, чтобы решить подобные ситуации. Заранее спасибо!
Вот некоторые примеры данных о том, как выглядит мой PouchDB:
0: {
doc: {
first_name: 'John',
last_name: 'Smith',
phone: 'xxxxxxx',
email: '[email protected]'
},
id: '12314131231',
key: '12314131231'
},
1: {
doc: {
first_name: 'Jane',
last_name: 'Doe',
phone: 'xxxxxxx',
email: '[email protected]',
favorite: true <!-- Added by app, overwritten when replication occurs -->
},
id: '1231344431',
key: '1231344431'
}
localDB.replicate.from(remoteDB)
, а затем выполняю $scope.$apply (обновление содержимого), когда репликация завершена. - person Justin   schedule 08.07.2015favorite
, это свойство НЕ синхронизируется обратно в CouchDB — это предназначено, иначе у всех будут одни и те же друзья. Когда репликация вызывается, она перезаписывает сохраненные данные PouchDB, включая свойствоfavorite
, которое было добавлено к контактам, выбранным пользователем. Я ищу альтернативное решение этой проблемы, чтобы сохранить свойстваfavorite
и не перезаписывать их. Я добавлю пример данных выше. - person Justin   schedule 09.07.2015