Android Couchbase Lite DocumentUpdater不更新数据库
以下是我更新文档的代码:Android Couchbase Lite DocumentUpdater不更新数据库,android,couchbase,couchbase-lite,Android,Couchbase,Couchbase Lite,以下是我更新文档的代码: doc.update(new Document.DocumentUpdater() { @Override public boolean update(UnsavedRevision newRevision) { Map < String, Object > properties = newRevision.getUserProperties() propertie
doc.update(new Document.DocumentUpdater() {
@Override
public boolean update(UnsavedRevision newRevision) {
Map < String, Object > properties = newRevision.getUserProperties()
properties.put("timeCreated", "348390284");
properties.put("name", "231321");
return true;
}
});
我被困在这一点上,不确定如何修复它。
UnsavedRevision.getUserProperties()
返回新的Map
实例。因此,在返回true之前,需要通过调用修订版的setUserProperties()
方法将其设置回原值
以下代码来自Couchbase Lite示例代码
Document doc=database.getDocument(myDocId);
doc.update(新的Document.DocumentUpdater(){
@凌驾
公共布尔更新(未保存的修订版newRevision){
Map properties=newRevision.getUserProperties();
财产。出售(“所有权”,所有权);
物业。认沽期权(“票据”,票据);
newRevision.setUserProperties(properties);您使用的是哪个版本的Couchbase?您从查询中获得了两个文档。它们是否具有您创建它们时使用的原始内容?这是我的Gradle文件编译'com.Couchbase.lite:Couchbase lite android:+'中的行。最初,文档是空的(我创建了新文档)我试图获取我放入属性中的项目,但当我执行all doc查询时,每一行都没有我的内容,只是有一点关于我调用此更新程序的上下文。在我的android web服务器中,我希望在负载到达服务器时保存负载。我创建一个新线程来处理每个请求,并在该线程中使用更新程序.
Database db = getDB(ID);
Query query = db.createAllDocumentsQuery();
query.setDescending(true);
try {
QueryEnumerator result = query.run();
for (Iterator<QueryRow> it = result; it.hasNext(); ) {
QueryRow row = it.next();
row.getDocument().getProperties();
}
} catch (CouchbaseLiteException e) {}
row -> size 2
"conflict" -> "size=0"
"rev" -> "1-ac2065458743..."
Document doc = database.getDocument(myDocId);
doc.update(new Document.DocumentUpdater() {
@Override
public boolean update(UnsavedRevision newRevision) {
Map<String, Object> properties = newRevision.getUserProperties();
properties.put("title", title);
properties.put("notes", notes);
newRevision.setUserProperties(properties); <<----
return true;
}
});