2017-10-13 11 views
0

지난 주까지 com.couchbase.lite : couchbase-lite-android : 2.0.0-DB008을 사용했는데 제거 할 수없는 것으로 알고 있습니다. 안드로이드 스튜디오의 Gradle로 가져 오십시오. 그래서 최신 버전의 couchbase com.couchbase.lite : couchbase-lite-android : 2.0.0-158을 사용해야했습니다. 이 버전의Couchbase v2.0에서 문서 가져 오기

getDocumentId이 없기 때문에 나는 문서를 검색 할 수 없습니다() 방법과 우리가 database.getDocument (수있는 ID)을 사용할 수 없습니다;

내가 저장 한 문서의 코드입니다 :

 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()); 
    } 

모두가 null 데이터를 제공합니다.

모든 문서와 ID를 검색 할 수있는 방법이 있습니까?

답변

0

우선 내가 너라면 업그레이드 할 것입니다. DB-018이 출시되었으며 각 버전에서 중요한 버그가 수정되었습니다. 그러나 DB-013이 동기화 프로토콜을 변경 했으므로 서버를 업그레이드해야합니다.

둘째로, DB017 또는 DB018 중 하나에서 얻으려는 필드를 지정해야하며, 그렇지 않으면 검색 결과는 사용자가 볼 수있는 것처럼 빈 행입니다. 이것이 의도 된 것이거나 버그인지 확실하지 않습니다. ''을 (를) 지정하면 모든 입력란이 표시됩니다. 그것은 당신에게 문서를 줄 것이 아니라, 당신에게 사전을 줄 것입니다.

ID를 얻는 가장 쉬운 방법은 문서 자체에 ID를 삽입하는 것입니다. 아마도 당신이 요청할 수있는 메타 필드가 있을지 모르지만, 나는 그것이 무엇인지 모릅니다.

+0

ID와 같은 정보를 얻기 위해 사용할 수있는 '메타'클래스가 있습니다. 'Expression.meta(). id '또는 이와 동등한 것이 Select에 넣을 수있는 것입니다. – borrrden