我目前在我的 iOS 和 android 应用程序中使用 couchbase-lite 从运行 CouchDB 的数据库同步文件。
我经常删除不再需要的文件,并且我希望从移动应用程序中删除相同的文件,但是任何拉复制只会拉更新或新文件,并且不会触发移动应用程序上的删除。
有没有办法从移动应用程序中删除不再在服务器数据库上的文档,而无需对移动应用程序进行完全清除,然后重新同步整个数据库?
我目前在我的 iOS 和 android 应用程序中使用 couchbase-lite 从运行 CouchDB 的数据库同步文件。
我经常删除不再需要的文件,并且我希望从移动应用程序中删除相同的文件,但是任何拉复制只会拉更新或新文件,并且不会触发移动应用程序上的删除。
有没有办法从移动应用程序中删除不再在服务器数据库上的文档,而无需对移动应用程序进行完全清除,然后重新同步整个数据库?
从数据库类有一个purgeDocument()
方法。这将从本地数据库中删除目标文档 - 目标文档的服务器副本保持不变。如果文档稍后更新,则文档将在下次复制时返回到本地客户端。
http://docs.couchbase.com/mobile/2.1/couchbase-lite-swift/Classes/Database.html
您可以根据以下内容从数据库中删除文档id
:
try {
for (Result result : docList) {
String id = result.getString(0);
Document doc = database.getDocument(id);
database.delete(doc);
}
} catch (CouchbaseLiteException e) {
e.printStackTrace();
}
要获取文档 ID,您必须查询如下内容:
Query query = QueryBuilder
.select(SelectResult.expression(Meta.id), SelectResult.all())
.from(DataSource.database(database))
ResultSet rs = query.execute();
for (Result result : rs) {
Dictionary data = result.getDictionary("db_name");
Log.e("CouchbaseLite ", "document: " + data);
Log.e("CouchbaseLite ", "id: " + result.getString(0));
}