我是Couchbase Android的新手。我使用Couchbase Lite v1.1.0将我的数据保存在本地。但是我在遇到问题时遇到了一些问题。我用谷歌搜索,在Couchbase Lite中阅读文档并在stackoverflow中查找所有帖子,但我仍然不明白我所面对的是什么。
以下是我的数据库示例代码,用于将数据保存在数据库中,文档的自定义ID为索引 i :
cbManager=new Manager(new AndroidContext(context),
Manager.DEFAULT_OPTIONS);
cbDatabase=cbManager.getDatabase("my_db");
.....
for(int i=0; i<10; i++){
Document document=cbDatabase.getDocument(String.valueOf(i)); // This line I custom document with id i
Map<String,Object> docContent= new HashMap<String, Object>();
docContent.put("title", title);
docContent.put("firstName", firstName);
docContent.put("lastName", lastName);
try{
document.putProperties(docContent);
} catch (CouchbaseLiteException e){
Log.e(TAG, "Cannot write document to database", e);
}
}
从Couchbase Lite获取所有数据:
Query allDocumentsQuery= cbDatabase.createAllDocumentsQuery();
QueryEnumerator queryResult=allDocumentsQuery.run();
for (Iterator<QueryRow> it=queryResult;it.hasNext();){
QueryRow row=it.next();
Document doc=row.getDocument();
String id=doc.getId(); // I get the id in here but the result is the default id (UUID):(
}
所以,我有两个问题:
当我从数据库(couchbase lite)查询所有文档时,返回的文件是默认ID(UUID),为什么不返回我的自定义ID?
(表示:将所有文档保存到自定义ID的数据库:1,2,3 ...... 9.但是从数据库获取的所有文档的结果都有默认ID:UUID,UUID, ......,UUID。)
请给我一些建议或指导我做最好的方法。非常感谢你们。
答案 0 :(得分:0)
您需要将_rev属性添加到地图中,并将ID作为值。
以下摘自documentation:
putProperties(Map<String, Object> properties)
Creates and saves a new Revision with the specified properties. To succeed the specified properties must include a '_rev' property whose value maches the current Revision's id.
所以你的代码应该是这样的:
Map<String,Object> docContent= new HashMap<String, Object>();
docContent.put("_rev", String.valueOf(i));
docContent.put("title", title);
docContent.put("firstName", firstName);
docContent.put("lastName", lastName);