我希望能够在 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
的属性访问器。
如果您无论如何都想获取逻辑删除版本,因为您在其中存储了数据,您可以使用其他访问器,例如 getLeafRevisions
或 getRevisionHistory
。
(仅供引用,我写了这段代码,所以这可能是权威的答案:)
关于swift - 将属性存储在已删除的 couchbase 文档中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35954759/