当我没有设置_id
我可以插入文档时,当我添加_id
时,我收到错误:
Failed to create document java.util.concurrent.ExecutionException:
com.cloudant.sync.datastore.InvalidDocumentException: Field name start
with '_' is not allowed.
我的代码是:
private Map<String, String> temponload() {
Map<String, String> userInfo = new HashMap<>();
userInfo.put("_id", "org:HELLO"+str_email);
userInfo.put("first_name", "FIRSTNAME");
userInfo.put("last_name", "LASTNAME");
return userInfo;
}
public Map<String, String> createDocument(Map<String, String> map) {
DocumentRevision rev = new DocumentRevision();
rev.setBody(DocumentBodyFactory.create(map));
try {
DocumentRevision created = sunDatastore.createDocumentFromRevision(rev);
return map;
} catch (DocumentException de) {
return null;
}
}
请帮我解决这个问题
答案 0 :(得分:1)
_
前缀字段是元数据字段。
在您正在使用的库中(sync-android on github),元数据字段通过DocumentRevision
对象本身的getter进行访问,如果文档正文具有_
前缀,则会拒绝该文档正文领域。
元数据字段是:
要设置文档的ID,必须根据Chris Snow的回答使用构造函数。如果没有为库设置文档的ID
生成该文档的ID,这就是为什么如果从文档正文中省略_id
则成功保存的。
答案 1 :(得分:0)
您可以使用将Id传递给DocumentRevision的构造函数,即
DocumentRevision(java.lang.String id)
来源:http://www.javadoc.io/doc/com.cloudant/cloudant-sync-datastore-javase/1.1.5