我正在尝试在CouchbaseLite中保存新文档,但面对此问题,出现异常。

com.couchbase.lite.CouchbaseLiteException


异常消息:

com.couchbase.lite.CouchbaseLiteException
com.couchbase.lite.CouchbaseLiteException
null
[1462915328, 451, 1462915272, 5, 1463020336, 137, 1463020280, 9, 1462744624, 39,        1462943280, 4, 1463283568, 58, 1463284808, 9, 1459791184, 28, 1463191704, 0, 1463287160, 0, 1463294584, 8, 1463285984, 2, 1463298952, 2, 1461828864, 24, 1459658792, 6, 1461922408, 22, 1459660472, 15, 1461916072, 3, 1461898944, 8, 1459489944, 18, 1459609664, 2, 1459600392, 2, 1459600456, 4, 1460186072, 84, 1460049056, 48, 1459080768, 0, 1459081896, 17, 1460208056, 11, 1460002968, 66, 1459100640, 0]
null
Status: 400
[]


我以为没有一个例外,那就是不清楚背后发生了什么,我不知道该怎么办,不知道该怎么解释。

这是我的代码:

Map<String, Object> map = new HashMap<String, Object>();
    map = (Map<String, Object>) gson.fromJson(json, map.getClass());
    //map.put("_id", UUID.randomUUID().toString());

    Document document = mDatabaseLocal.createDocument();

    try {
        document.putProperties(map);
    } catch (CouchbaseLiteException e) {
        e.printStackTrace();
    }

最佳答案

在对此进行了大量研究之后:

我发现您的地图中不应包含以下划线字符'_'开头的键的任何属性,因为它是为CouchbaseLite保留的。

CouchbaseLite当前没有为此提供适当的异常消息,因此您将被困住。您唯一需要注意的就是不要在地图中包含任何此类密钥。

就像如果您的class(obj)中有_id和_rev字段,则需要删除它们

map.remove("_id");
map.remove("_rev");


致电之前:

try {
        document.putProperties(map);
    } catch (CouchbaseLiteException e) {
        e.printStackTrace();
    }

关于android - com.couchbase.lite.CouchbaseLiteException调用document.putProperties(map)时-Android吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22679850/

10-10 16:35