【问题标题】:Fetching multiple levels of objects with kendo ui datasource?使用 kendo ui 数据源获取多个级别的对象?
【发布时间】:2014-09-07 10:20:12
【问题描述】:

我对使用 telerik appbuilder 开发移动应用程序非常陌生。从 Everlive 获取数据时,有些事情我很难理解。

让我们考虑一个简单的例子。假设我有属于这些帖子的博客帖子和评论。而且帖子和评论都是用户发表的。

在一个视图中,我想展示带有相应评论的帖子,并且我还需要发布评论的用户的用户名(评论表仅包含 userId)。

帖子和评论都很容易获取,因为我有帖子的 ID。但是如何获取每条评论对应的用户呢?

FriendsApp 示例做了一些非常相似的事情,但它使用这一行来获取用户:

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

这会获取所有用户并在客户端过滤他们吗?如果您有 10 个用户,我想这没关系。但是如果你有一百万用户呢?

【问题讨论】:

    标签: kendo-ui telerik telerik-appbuilder everlive


    【解决方案1】:

    我猜 FriendsApp 使用这种解决关系的方式只是为了保持示例的简单性。 Everlive 提供了一个更有意义的工具集来解决名为 Expand 的关系字段。您可以在此处探索 REST API:

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

    或者这里的JS SDK函数:

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

    由于 Friends 应用程序使用 Kendo UI 数据源组件,您可以在请求中发送 Expand 标头。数据源的以下配置将返回每个Activity/Comments实体中用户的DisplayName:

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

    同样可以应用于为每篇博客文章解析 cmets。鉴于 Friends 数据模式,您将需要使用 Everlive API 的外部关系解析器。请注意,它仅在 GetById 场景中可用,例如通过 Id 检索 Activity 时,您可以解析指向该 Activity 的 Comments,这在主从视图中通常非常方便。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-31
      • 2013-09-03
      • 2014-12-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多