Hello!
I have generic function to create Couchbase lite documents as follows:
protected Document saveDocument(Document document, Map<String, Object> docData) {
try {
document.putProperties(docData);
} catch (CouchbaseLiteException e) {
e.printStackTrace();
return null;
}
return document;
}
But when I want to add HashMap as a value e.g.:
Map<String, Object> docData = new HashMap();
Map<String, Object> nestedObject = new HashMap();
nestedObject.put(“key1”, 1);
nestedObject.put(“key2”, 2);
docData.put(“nestedObject”, nestedObject)
//save to cb lite
saveDocument(docInstance, docData)
it works OK. But when I try to receive my field “nestedObject” I got string, not HashMap or LinkedHaskMap (usually this I got from Couchbase when syncing).
Am I doing something wrong here? How to created nested objects in Couchbase lite?
May be you can refer this unit test?
saveDocInBaseTestDb(doc1a);
Document doc1b = baseTestDb.getDocument("doc1");
assertNotNull(doc1b);
assertNotSame(doc1a, doc1b);
assertTrue(doc1b.exists());
assertEquals(doc1a.getId(), doc1b.getId());
assertEquals(dict, doc1b.toMap());
}
@Test
public void testSetDictionaryContent() throws CouchbaseLiteException {
Map<String, Object> dict = new HashMap<>();
dict.put("name", "Scott Tiger");
dict.put("age", 30L);
Map<String, Object> address = new HashMap<>();
address.put("street", "1 Main street");
address.put("city", "Mountain View");
address.put("state", "CA");
dict.put("address", address);
doc.setValue("key", 1);
saveDocInBaseTestDb(doc);
assertEquals(n, baseTestDb.getCount());
Document savedDoc = baseTestDb.getDocument(docID);
assertEquals(1, savedDoc.getSequence());
return savedDoc;
}
protected final Document saveDocInBaseTestDb(MutableDocument doc) throws CouchbaseLiteException {
baseTestDb.save(doc);
Document savedDoc = baseTestDb.getDocument(doc.getId());
assertNotNull(savedDoc);
assertEquals(doc.getId(), savedDoc.getId());
return savedDoc;
}
protected final Document saveDocInBaseTestDb(MutableDocument doc, DocValidator validator)