删除所有 Couchbase 数据/文档 ios(或删除所有 ios 数据?)

Posted

技术标签:

【中文标题】删除所有 Couchbase 数据/文档 ios(或删除所有 ios 数据?)【英文标题】:Remove all Couchbase data/documents ios (or remove all ios data?) 【发布时间】:2015-10-13 15:03:37 【问题描述】:

是否有任何有效的方法可以通过 CBL 在 ios 中删除所有文档存储?我对此有疑问,或者如果有人知道如何从本质上使应用程序就像刚刚安装一样,那也将非常有帮助。我们正在努力确保我们的注销实际上将应用程序设置为就像您第一次打开它一样,因此不会保留任何数据。我尝试了一些东西,但无济于事,我错过了什么吗?很多很多的搜索结果几乎没有帮助。

这也不起作用(Is there any way to clear all data stored from the installation of app?)

我还尝试删除应用程序主目录中的所有文件,这在一定程度上可行,但会导致我假设的问题,因为这不是应该做的事情。我所说的数据应该包含在文档文件夹中吗?

提前谢谢你。

【问题讨论】:

您是否有理由在不通过 Couchbase Lite API 的情况下执行此操作?为什么不简单地从经理那里获取数据库名称列表,然后获取每个名称并调用delete 呢? 感谢您的回复,正如下面评论的那样,当我下班回家后,在阅读了更多内容后,我确实最终这样做了。也适用于任何有类似或可能更需要的人,如下所述。 cbl 管理器有一个目录方法,您可以使用 DirectoryEnnumerator 和 filemanager 清除该方法,以清除或类似地清除其他包含文件夹的应用程序。 @thekevshow 我也面临同样的问题。我需要在注销时清除所有数据。我尝试删除数据库,关闭所有数据库。但仍然没有运气,因为我得到了以前登录用户的文件。您能否详细说明退出时我需要做什么和所有操作? 【参考方案1】:

我建议使用 Couchbase-lite API 来清除 Couchbase-lite 本身创建的所有数据。您可以使用其他(取决于您存储此数据的方式/位置)方法在注销时清除其他用户数据。

如果您只想删除为用户创建的所有数据库,请向CBLManager 询问所有数据库名称。

/** An array of the names of all existing databases. */
@property (readonly) CBLArrayOf(NSString*)* allDatabaseNames;

您可以使用以下方法异步删除每个数据库:

[manager backgroundTellDatabaseNamed:self.database.name
                                  to:^(CBLDatabase *db) 
                                    NSError *error;
                                    if (![db deleteDatabase:&error])
                                      //bummer!
                                    else
                                      //success!
                                  ];

如果您特别在寻找删除文档的方法,请查看本地文档上的 CBLDatabase API。

/** Deletes the local document with the given ID. */
- (BOOL) deleteLocalDocumentWithID: (NSString*)localDocID
                             error: (NSError**)outError ;

但是,这有不同的用途;您不需要在删除数据库之前删除文档。要清除注销时的所有数据,只需删除属于用户的所有数据库即可。

另外,如果你仍然坚持不使用CBL API,CBL文件存储在默认目录下,该路径可以通过CBLManager获取

/** The default directory to use for a CBLManager. This is in the Application Support directory. */
+ (NSString*) defaultDirectory;

【讨论】:

谢谢你,当我回到家时,实际上我确实这样做是为了清除数据库我阅读了一些文档来删除数据库,当然正如我最初的问题所说的那样,我实际上去清除了一堆文件夹,使用 DirectoryEnumerator 的文件夹和文件管理器(NSFilemanager)。我需要从我们的应用程序中清除潜在存储的缓存和其他内容,以便我们可以彻底注销应用程序。感谢您的回复,谢天谢地,我已正确清除了这方面。

以上是关于删除所有 Couchbase 数据/文档 ios(或删除所有 ios 数据?)的主要内容,如果未能解决你的问题,请参考以下文章

Couchbase:查找二进制文档的索引

如果数据发生变化,文档是不是会从 couchbase 视图中删除?

Spring Data(数据) Couchbase

Couchbase II( View And Index)

couchbase集群文档不复制但分裂

java的CouchBase-lite的初次踩坑