로그 메시지를 저장하는 데이터베이스가 있습니다. 각 메시지에는 우선 순위, 날짜 및 메시지에 대한 정보가 들어 있습니다. 응용 프로그램은 우선 순위에 따라 제한 될 수있는 로그 메시지를 날짜별로 정렬하여 쿼리 할 수 있어야합니다. 그래서 [doc.priority, doc.date]
의 키 by_priority
라는 뷰를 만들 수 있습니다, 나는 쉽게 다음과 같은 요청에 적어도 $X
의 우선 순위 값으로 모든 메시지를 조회 할 수 있습니다로직을 복제하지 않고 뷰 출력의 범위에 영향을주는 변경 사항을 쿼리하십시오.
GET $database/_design/$design/_view/by-priority?startkey=[$X]&endkey=[{}]
지금 나는를 확장 할 도착한 경우 지정된 기준에 따라 새 메시지를 자동으로 가져 오는 응용 프로그램입니다. 나는 다음과 같은 요청합니다 (prio
쿼리 매개 변수와 함께 전달) 적어도 $X
의 우선 순위와 메시지를 선택 min_priority
라는 필터를 추가하고하여이 작업을 수행 할 수 있습니다
GET $database/_changes?filter=$design/max_priority&prio=$X
을하지만 내가해야 함을 의미 startkey
및 endkey
에 대한 값을 구성하여 클라이언트뿐만 아니라 서버에서 (필터 기능을 통해) 선택 논리 (최소, 최대, 우선 순위 범위, 우선 순위 및 날짜)를 복제하십시오.
동일한 로직을 두 번 구현하는 것이 실제로 필요한가요?
또는보기와 필터 함수간에 문서의 키 - 값 쌍을 생성하는 코드를 공유하는 것이 최소한 가능합니까? 이 방법은보기 기능을 호출하고 startkey
및 endkey
매개 변수를 받아들이는 각보기에 대한 일반 필터 함수를 가질 수 있습니다. 또한 키 비교를위한 CouchDB의 알고리즘에 액세스하는 방법이 필요합니다. 거기에 JavaScript에서 액세스 할 수있는 함수가 있습니까?