2017-10-13 70 views
0

我曾經使用com.couchbase.lite:couchbase-lite-android:2.0.0-DB008直到上週,並知道它似乎被刪除,因爲我不能將它導入到android studio的Gradle中,所以我不得不使用最新版本的couchbase com.couchbase.lite:couchbase-lite-android:2.0.0-158獲取文檔在Couchbase v2.0

有了這個版本,我不能檢索文檔,因爲它沒有getDocumentId()方法,我們不能用database.getDocument(docID的);

這是我已保存的文件代碼:

 Document document = new Document(); 
     document.setInt("RecordType", 100); 
     document.setString("Number", "1234567890"); 
     document.setDate("Date", new Date()); 
     document.setString("Text", "This is message text."); 

     try { 
      database.save(document); 
      tvResult.setText(document.getId()); 
     } catch (Exception e) { 
      e.printStackTrace(); 
      Log.e(LOG_TAG, e.toString()); 
      tvResult.setText(e.toString()); 
     } 

,這是應該檢索文件的代碼:

Query query = Query.select() 
      .from(DataSource.database(database)) 
      .where(
        Expression.property("RecordType").equalTo(100) 
      ); 

    try { 
     ResultSet rows = query.run(); 
     Result row; 
     while ((row = rows.next()) != null) { 

      row.hashCode() 

      tvResult.append("DocumentID: " + row.getString("documentID") + "\n" + 
        "Number: " + row.getString("Number") + "\n" + 
        "Date: " + row.getDate("Date") + "\n\n" 
      ); 

     } 
    } catch (Exception e) { 
     Log.e(LOG_TAG, e.toString()); 
     tvResult.setText(e.toString()); 
    } 

行的所有給空數據。

有什麼辦法可以檢索到所有的文件及其ID嗎?

回答

0

首先,如果我是你,我會升級。 DB-018不在了,每個版本都在修復重大的bug。但要小心--DB-013更改了同步協議,因此您還需要升級服務器。其次,對於DB017或DB018,您必須指定您希望獲取的字段,或者搜索結果爲空行,就像您看到的那樣。我不確定這是有意的還是一個錯誤。指定「」會給你所有的領域。請注意,它不會給你一個文件,它會給你一個詞典。

事實上,我發現獲取id的最簡單方法是將其嵌入文檔本身。可能有一些元域可以請求,但我不知道它是什麼。

+0

有一個'Meta'類可以用來獲取ID等信息。 'Expression.meta().id'或等價物可以放入Select中。 – borrrden