2014-09-07 5 views
0

저는 telerik appbuilder를 사용하여 모바일 애플리케이션을 개발하는 데있어 매우 새로운 기술입니다. Everlive에서 데이터를 가져 오는 데 어려움이 있습니다.검도 UI 데이터 소스로 여러 레벨의 오브젝트를 가져 오는 중입니까?

간단한 예를 들어 보겠습니다. 내가 그 포스트에 속한 블로그 포스트와 코멘트를 가지고 있다고 말하게한다. 게시물과 댓글은 모두 사용자가 만듭니다.

하나의 견해에서 해당 게시와 함께 게시물을 제시하고 싶습니다. 주석을 게시 한 사용자의 사용자 이름도 필요합니다 (설명 표에는 userId 만 포함).

포스트의 ID를 가지고 있기 때문에 포스트와 댓글 모두 가져올 수 있습니다. 하지만 각 댓글에 대해 해당 사용자를 가져 오는 방법은 무엇입니까?

FriendsApp 예는 매우 비슷한 무언가를하지만 사용자가 얻을이 줄을 사용

var user = $.grep(app.Users.users(), function (e) { 
    return e.Id === userId; 
})[0]; 

이 모든 사용자를 가져을 그들에게 클라이언트 측 필터? 10 명의 사용자가 있다면 괜찮은 것 같습니다. 하지만 백만 명의 사용자가 있다면 어떨까요?

답변

1

나는 FriendsApp가 샘플의 단순성을 유지하기 위해 이러한 관계를 해결하는 방법을 사용하고 있다고 생각합니다. Everlive는 Expand라는 관계 필드를 해결하는 훨씬 더 의미있는 도구 세트를 제공합니다.

http://docs.telerik.com/platform/backend-services/development/rest-api/relations/simple-expanding

또는 여기에 JS SDK 기능 : 당신은 여기 REST API를 탐색 할 수 있습니다

http://docs.telerik.com/platform/backend-services/development/javascript-sdk/relations/simple-expanding.

친구 앱이 Kendo UI 데이터 소스 구성 요소를 사용하므로 요청과 함께 확장 헤더를 보낼 수 있습니다. 데이터 소스의 다음과 같은 구성은 각 활동/댓글 엔티티에 사용자의 표시 이름을 반환합니다

var expandObject = { 
    "CreatedBy": { 
     "ReturnAs": "User", 
     "SingleField": "DisplayName" 
    } 
}; 

var dataSource = new kendo.data.DataSource({ 
    type: "everlive", 
    transport: { 
     typeName: 'Activities', // replace this with Comments 
     read: { 
      beforeSend: function (xhr) { 
       xhr.setRequestHeader("X-Everlive-Expand", JSON.stringify(expandObject)) 
      }, 
     } 
    }, 
    schema: { 
     model: { 
      id: Everlive.idField 
     } 
    } 
}); 

dataSource.fetch(function (data) { 
    console.log(data.items); 
}); 

같은 각 블로그 게시물에 대한 의견을 해결하기위한 적용될 수있다. Friends 데이터 스키마가 주어지면 Everlive API의 외부 관계 분석기를 사용해야합니다. GetById 시나리오에서만 사용할 수 있습니다. Id로 활동을 검색 할 때이 활동을 가리키는 설명을 해결할 수 있습니다.이 설명은 일반적으로 마스터 상세보기에서 매우 편리합니다.