2016-08-31 3 views
0

안녕하세요. CouchDB를 사용하고 있는데이 문서를 볼 수있는 사용자 ID 배열을 포함하는 users 필드를 가진 articles 문서가 있다고 가정합니다.행마다 액세스 권한이있는 페이지 매기기

예제 시나리오에서는 페이지 당 10 개의 기사를 보여주는 페이지가 매겨지고 컨트롤러는 CouchDB에서 처음 10 개의 기사를 검색 한 다음 반환 된 기사에 대해 하나씩 액세스 권한을 확인합니다. 하지만 현재 사용자는 8 개의보기 액세스 권한 만 가질 수 있으므로 테이블은 10 대신 8 개의 기사 만 표시합니다.

액세스 권한 논리를 구현하는 것 이외에 이러한 상황을 처리하는 가장 좋은 방법은 무엇입니까? CouchDB 레이어?

function (doc) { 
    doc.users.forEach(function (user) { 
    emit([ user ]); 
    }); 
} 

I는이 경우 단지 한 항목의 배열을 방사 :

답변

0

는이를 위해 단순히 I users 필드에 맞도록 도면을 사용한다. 기사를 정렬하기 위해 doc.created과 같은 것을 방출한다고 가정하면, 해당 배열에 user 뒤에 간단히 추가 할 수 있습니다. 당신은 단순히 CouchDB를 함께 평소처럼 페이지를 매기 수

{ 
    "rows": [ 
    { "id": "<article-1>", "key": [ "<user-1>", "<created>" ] }, 
    { "id": "<article-2>", "key": [ "<user-1>", "<created>" ] }, 
    { "id": "<article-3>", "key": [ "<user-1>", "<created>" ] }, 
    { "id": "<article-1>", "key": [ "<user-2>", "<created>" ] }, 
    { "id": "<article-1>", "key": [ "<user-3>", "<created>" ] } 
    ] 
} 

:

뷰 결과는 같을 것이다. 페이지 1의 경우 보통의 페이징 limit=10&skip=0 외에 2 페이지의 경우 limit=10&skip=10start_key=["<user-1>"]&end_key=["<user-1>","\ufff0"]을 사용하면됩니다.