我删除了一个具有特定 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/