0

ユーザーが選択した日付に基づいてイベントを表示する Android 用のアプリケーションに取り組んでいます。Couchdb と Ektorp を使用しています。「2013-10-01」の代わりにカレンダーから読み取る必要がある可変日付を含むメソッドfindByMesのビューを定義する方法がわかりません...これは私が取り組んでいるクラスEventDAOのコードですの。

誰かが私を助けてくれたらとてもありがたいです!!

public class EventDAO extends CouchDbRepositorySupport<EventVO> {

        public EventDAO(CouchDbConnector db) {
                super(EventVO.class, db);
                initStandardDesignDocument();
        }

        @GenerateView @Override
        public List<EventVO> getAll() {
                ViewQuery q = createQuery("all")
                                .includeDocs(true);
                return db.queryView(q, EventVO.class);
        }

        public List<EventVO> findByDate(String Date) {
            List<EventVO> event = queryView("by_date", Date);
            return  event;
        }

       @View( name = "by_mes", map ="function(doc) {if (doc.type == 'Event' && doc.date >= '2013-10-01' && doc.date <= '2013-10-31'  ) { emit(doc._id,doc)}}")
        public List<EventVO> findBymes() {
           ViewQuery q = createQuery("by_mes")
                   .includeDocs(true);
           return db.queryView(q, EventVO.class);

        }
}
4

1 に答える 1

0

ビューは一度構築され、変更されたドキュメントに対してのみ増分的に更新されるため、ビュー内に動的なものを含めることはできません。マップ関数からキーに日付ビットを移動する必要があります。

function(doc) {
    if (doc.type == 'Event'){ 
      var key = doc.date.split('-').map(function(i){
          return parseInt(i, 10);
      }); // .map part is optional, I prefer to have date-time arrays with int values
      key.push(doc._id);
      emit(key, doc);
    }
}

クエリ パラメータでそれら (日付ビット) を使用します。

http://localhost:5984/db/_design/ddoc/_view/by_mes?startkey=[2013,10,1]&endkey=[2013,10,31, {}]

valueこれにより、別の出力が得られます (の doc オブジェクトは省略します)。

{
    "offset": 0,
    "rows": [
        {
            "id": "foo",
            "key": [2010, 10, 1, "foo"],
            "value": {}
        },
        {
            "id": "bar",
            "key": [2010, 10, 11, "bar"],
            "value": {}
        },
        {
            "id": "baz",
            "key": [2010, 10, 31, "baz"],
            "value": {}
        }
    ],
    "total_rows": 3
}

ただし、要求された日付範囲をその場で変更する機能があります。

于 2013-10-25T12:44:37.397 に答える