将属性存储在已删除的 couchbase 文档中
Store attributes in deleted couchbase documents
我希望能够在 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
将 return nil 而不是 returning "tombstone" 修订版。然后这会影响 属性 访问器,它调用 currentRevision
.
如果你想获取墓碑修订版,因为你在其中存储了数据,你可以使用其他访问器,如 getLeafRevisions
或 getRevisionHistory
。
(仅供参考,我写了这段代码,所以这可能是权威答案:)
我希望能够在 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
将 return nil 而不是 returning "tombstone" 修订版。然后这会影响 属性 访问器,它调用 currentRevision
.
如果你想获取墓碑修订版,因为你在其中存储了数据,你可以使用其他访问器,如 getLeafRevisions
或 getRevisionHistory
。
(仅供参考,我写了这段代码,所以这可能是权威答案:)