【发布时间】:2015-09-16 06:51:47
【问题描述】:
我正在使用Ionic Framework 构建一个移动应用程序。该应用程序是一个简单的企业“员工目录”,使用 PouchDB 存储并与我的数据库同步。
我的应用程序具有下拉刷新功能,该功能可以在应用程序上启动从 CouchDB 到 PouchDB 的单向复制。这很好用,但我有一个小问题......
该应用程序具有“朋友列表”功能,用户可以在其中从列表中滑动员工以将其添加到快速联系人菜单中。当他们刷员工时,应用程序将favorite: true 属性添加到 PouchDB 文档中。在复制该特定文档之前,此功能非常有用。正如人们所期望的那样,添加的favorite: true 属性被删除,因为它没有与 CouchDB 同步(我想将此属性保留在本地)。
我的问题:有没有办法进行单向复制,但保留部分文档?我希望 CouchDB 数据库复制整个文档,但保持 favorite 属性不变。
我尝试使用带有 localStorage 的解决方案并将存储的数组与文档 ID 进行比较,但它非常混乱且性能不高。
有兴趣了解其他人可能为解决类似情况所做的工作。 提前致谢!
以下是我的 PouchDB 的一些示例数据:
0: {
doc: {
first_name: 'John',
last_name: 'Smith',
phone: 'xxxxxxx',
email: 'john@example.com'
},
id: '12314131231',
key: '12314131231'
},
1: {
doc: {
first_name: 'Jane',
last_name: 'Doe',
phone: 'xxxxxxx',
email: 'jane@example.com',
favorite: true <!-- Added by app, overwritten when replication occurs -->
},
id: '1231344431',
key: '1231344431'
}
【问题讨论】:
-
您如何将数据从沙发复制到小袋?你是在使用 PouchDB.replicate(source, target, [options]) 还是使用任何 pouch 插件
-
@BhaveshJariwala 我正在使用
localDB.replicate.from(remoteDB),然后在复制完成后执行 $scope.$apply(内容刷新)。 -
您是否检查过在对 pouch doc 进行更改后,从 couch 到 pouch 的复制是否有效?
-
您是将每个朋友的详细信息存储在单个文档中还是在 couchdb 中为每个朋友存储单独的文档?
-
@BhaveshJariwala 我可以确认复制工作正常。因为当我添加
favorite属性时,此应用程序是单向复制(从 CouchDB 到 PouchDB),所以该属性不会同步回 CouchDB - 这是有意的,否则每个人都会有相同的朋友。当调用复制时 - 它会覆盖存储的 PouchDB 数据,包括添加到用户选择的联系人的favorite属性。我正在寻找此问题的替代解决方案,以便我可以保留favorite属性并且不会覆盖它们。我将在上面添加示例数据。