javascript - 如何真正删除pouchDb中的文件?

标签 javascript pouchdb

我删除了一个具有特定 ID 的文档,现在我想创建一个具有相同 ID 的新文档。我无法使用不同的 ID 创建它,因为我使用我的 ID“存储对象信息”,顺便说一句,如果这是好的做法,请使用 idk。例如我的 ID 看起来像这样:

存储项目的文件:p0

存储项目“p0”中的 worker 的文档:p0/w0

存储项目“p0”中的第二个工作人员的文档:p0/w1

等..

因此,例如,我没有向工作文档添加属性“projectId”,而是使用其 ID 存储此信息,这就是我所说的“使用 ID 存储对象信息”的意思.然后,当我需要来自项目“p0”的工作人员时,我请求 pouchDb 以“p0”开头的所有文档 ID。然后我过滤结果以仅获取与工作人员 ID 正则表达式 ( p[0-9]+\/w[0-9]+ ) 匹配的 ID,然后对这些 ID 执行第二个请求,包括文档。

所以我误删除了我的文档'p0',我想重新创建它,怎么办?我处理文档的方法是否正确?

最佳答案

假设您没有启用自动压缩或调用 compact(),您始终可以恢复 PouchDB 中的任何文档修订。

不幸的是,没有插件可以让这个变得简单,但基本上你需要 get() 带有选项的文档 {revs: true, open_revs: 'all'} ,然后你会得到一个名为 _revisions 的对象,它描述了整个文档历史,你可以从中恢复丢失的修订。例如。如果对象是:

{_revisions: {start: 3, ids: ['x', 'y', 'z']}}

然后修订 ID 为 '1-z''2-y''3-x',您可以然后可以通过 get() 获取,例如{rev: '1-x'}

这里有更长的解释:http://garmoncheg.blogspot.com/2013/11/couchdb-restoring-deletedupdated.html

关于javascript - 如何真正删除pouchDb中的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30306531/

相关文章:

javascript - 显示内容侧边栏的背景 "Jumps"

javascript - 无法使用 JavaScript/jQuery 将特定的类名分配给 div 集合

angularjs - 使用 pouchdb 设置 karma 单元测试

javascript - 如何使用 jQuery 引用 <iframe> 的文档来获取其高度 ()?

javascript - 从element指令中的routeProvider获取参数

javascript - 为什么应该将 Angular Controller 实例发布到范围属性中?

ubuntu - PouchDB - 尝试连接到 CouchDB 时为 "Database encountered an unknown error"

javascript - promise 链和匿名 promise 返回

html - 前缀 - 这是什么意思

node.js - 如何使 pouchdb cloudant 复制与 node.js/express 代理一起工作?