以下是我更新文档的代码:
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;
}
});
当我运行查询并使用以下代码迭代结果行时:
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) {}
行没有我在updater中添加的任何更新。我得到这样的东西:
row -> size 2
"conflict" -> "size=0"
"rev" -> "1-ac2065458743..."
我现在陷入困境,不确定如何解决它。
答案 0 :(得分:0)
UnsavedRevision.getUserProperties()
返回新的Map
实例。因此,您需要在返回true之前通过调用setUserProperties()
方法将其设置回修订版。
以下代码来自Couchbase Lite示例代码。 LINK
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;
}
});
我希望这会对你有所帮助。
谢谢!