3
Here描述瞭如何更新Couchbase Lite中的文檔。CouchBase Lite - 更新文檔 - Android,爲什麼需要「properties.putAll(..)」?
我注意到,如果我在下面的代碼中取消properties.putAll(doc.getProperties());
的註釋,那麼更新不會發生,爲什麼?
Document doc = database.getDocument(myDocID);
Map<String, Object> properties = new HashMap<String, Object>();
properties.putAll(doc.getProperties()); // IF I UNCOMMENT THIS LINE, THE UPDATE DOES NOT WORK, WHY ?
properties.put("title", title);
properties.put("notes", notes);
try {
doc.putProperties(properties);
} catch (CouchbaseLiteException e) {
e.printStackTrace();
}
我的猜測是,這是因爲一些隱藏的屬性,但不知道。
編輯:
下面是另一個例子代碼顯示了這個問題:
static public void storeDoc(Database db, String key, Map<String, Object> p){
// Save the document to the database
Document document = db.getDocument(key);
Map<String, Object> p1 = new HashMap<>();
Map<String, Object> oldprops=document.getProperties();
if (oldprops!=null) p1.putAll(oldprops); //if I uncomment this line then the update does not work
for (Map.Entry<String, Object > e:p.entrySet()) {
p1.put(e.getKey(),e.getValue());
}
try {
document.putProperties(p1);
} catch (CouchbaseLiteException e) {
e.printStackTrace();
}
}
對不起,第一次使用的是錯誤的代碼。你正在使用哪個版本的CBL?這在1.2.1中適用於我。 – Hod
你是什麼意思的「不工作」?是否有例外?數據根本沒有更新? – borrrden
是的。未更新。 – jhegedus