swift - 将属性存储在已删除的 couchbase 文档中

标签 swift couchbase-lite

我希望能够在 Couchbase Lite 应用程序中保存已删除记录中的数据。根据the couchbase lite documentation我应该能够保存 deleted_at 属性以及使用此代码的所有当前属性(针对较新的 Swift 语法时代稍作修改):

do {
    try document.update { (newRev) -> Bool in
        newRev.isDeletion = true
        newRev["deleted_at"] = currentTimeStamp

        print("Document deleted at: \(document["deleted_at"])")
        // prints "Document deleted at: nil"

        print("Revision deleted at: \(newRev["deleted_at"])")
        // prints "Revision deleted at: Optional(2016-03-14)"
        return true
    }
} catch let error as NSError {
    self.handleError(error)
}

但是,如果我稍后尝试访问这些属性,它们将不存在:

print("Deleted: \(document.isDeleted)")
// prints "Deleted: Optional(true)"

print("Deleted at: \(document["deleted_at"])")  
// prints "Deleted at: nil"

我很确定这应该打印与 deleted_at 属性关联的时间戳。

我想也许couchbase不允许访问已删除记录中的数据,但恢复记录也不允许访问:

do {
    try document.update { (newRev) -> Bool in
        newRev.isDeletion = false

        print("Document deleted at: \(document["deleted_at"])")
        // prints "Document deleted at: nil"

        print("Revision deleted at: \(newRev["deleted_at"])")
        // prints "Revision deleted at: nil"
        return true
    }
} catch let error as NSError {
    self.handleError(error)
}

print("Deleted: \(document.isDeleted)")
// prints "Deleted: Optional(false)"

print("Deleted at: \(document["deleted_at"])")  
// prints "Deleted at: nil"

我可以做些什么来让它发挥作用吗?

最佳答案

CBLDocument 通常不会加载已删除的修订。大多数时候,如果文档被删除,开发人员认为它已经消失,所以 CBLDocument.currentRevision 将返回 nil 而不是返回“tombstone”修订。这会影响调用 currentRevision 的属性访问器。

如果您无论如何都想获取逻辑删除版本,因为您在其中存储了数据,您可以使用其他访问器,例如 getLeafRevisionsgetRevisionHistory

(仅供引用,我写了这段代码,所以这可能是权威的答案:)

关于swift - 将属性存储在已删除的 couchbase 文档中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35954759/

相关文章:

ios - 照片库更改时快速观察者模式

swift - 希望避免复制粘贴 Swift 2 委托(delegate)调度程序的方法名称

ios - 直接从 bundle 访问 couchbase lite 数据库?

ios - 在多个页面控件上显示数组的单个元素

swift - 当我在swift项目中使用lldb时,无法修改bool值

swift - 在 swift 4.1 中使用 nil 合并进行隐式解包时出现意外的 "some()"

couchbase - 从 Couchbase Lite 推而不拉

windows - 在 Windows 中查看和/或编辑 .cblite 数据库?

android - Couchbase facebook 拉验证器

nativescript - 将填充的 couchbase lite 数据库保存为 Nativescript 和 vue 中的备份?