Couchbase Lite DocumentUpdater不更新数据库

时间:2017-03-10 07:55:48

标签: android couchbase couchbase-lite

以下是我更新文档的代码:

        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..."

我现在陷入困境,不确定如何解决它。

1 个答案:

答案 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;
    }
});

我希望这会对你有所帮助。

谢谢!