2016-01-21 5 views
0

Я новичок в Couchbase Android. Я использую Couchbase Lite v1.1.0 для сохранения локальных данных. Но я сталкиваюсь с некоторыми проблемами, когда это нужно сделать. Я googled, прочитал документ в Couchbase Lite и нашел все сообщения в stackoverflow, но я до сих пор не понимаю, с чем я сталкиваюсь.Не удается получить пользовательский идентификатор документа в Couchbase Lite - Android

Вот мой сниппают демо-код, чтобы сохранить мои данные в базе данных с пользовательским идентификатором документа является индексом 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):(
} 

Так , У меня есть два вопроса:

  1. Когда я запрашиваю все d ocuments из базы данных (couchbase lite), возвращается документ с идентификатором по умолчанию (UUID), почему он не возвращает мой пользовательский идентификатор?

    (): Сохранение всего документа в базе данных, в котором пользовательские идентификаторы: 1, 2, 3 ...... 9. Но результат всех документов при получении из базы данных имеет идентификаторы по умолчанию: UUID, UUID ,. .., UUID.)

  2. Я не понимаю Почему я сохраняю документ в порядке, но возврат всех документов не в порядке? (потому что эта причина делает меня пользовательским идентификатором документа)

Просьба дать мне несколько советов или посоветуйте мне, как это сделать. Большое спасибо всем вам.

+1

Вы смогли получить документы, созданные с пользовательской ID? Я имею в виду, что вы должны выполнить, например: Документ document = database.getDocument ("custom_id"); – sweetiewill

+0

Упс, я стараюсь, и я не могу. Зачем? – bkit4u

+0

Это означает, что ваш документ не был сохранен с указанным вами идентификатором. Он был сохранен сгенерированным uuid. –

ответ

0

Вам необходимо добавить свойство _rev на свою карту с идентификатором в качестве значения.

Вот отрывок из 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); 
Смежные вопросы