parse.com + backbone检索用户的嵌套对象集

时间:2013-03-06 02:37:47

标签: parsing backbone.js nested-datalist

我想扩展parse.com在其教程中提供的this example以使用骨干集合和第二级数据(注释)。现在,exmaple正在检索用户的帖子列表,其中包含以下数据结构:

USER
--------------------------------------
| User_ID |  Username | ......
--------------------------------------
| 1       |  John     | ........
| 2       |  Jane     | ........


POST 
--------------------------------------
| POST_ID  |  User_ID | Title    | .....
--------------------------------------
| 20       |  1       | abcdefg  | .....
| 21       |  1       | svsvdsv  | .....

我要扩展此调用以便为每个帖子返回相应的评论。这意味着将有一个一个 api调用解析,它将所有帖子和所有评论返回给登录用户的那些帖子(正确嵌套)。以下是评论数据结构的示例:

COMMENT
-----------------------------------------------------------------------
| COMMENT_ID  |  POST_ID  |  Comment_Text        | Title    | .....
-----------------------------------------------------------------------
| 30          |  21       |  awesome post woohoo | abcdefg  | .....
| 31          |  21       |  terrible post....   | svsvdsv  | .....

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

Backbone.js不支持嵌套模型,因此您可以将Backbone-relational.js用于嵌套模型,

Backbone-relational.js提供Backbone模型之间的一对一,一对多和多对一关系  Backbone Relation

User = Backbone.Relational.Model({
    defaults : {
        id : '',
        name : '',
        posts : [], //collection
    },
    relation : [{
        type : 'HasMany',
        key : 'posts',
        relatedModel : 'com.dw.attendance.model.Post',
        reverseRelation : {
            key : 'user'
        }
    }]
});

Post = Backbone.Relational.Model({
    defaults : {
        id : '',
        user : '', //model
        comments : '', //collection
        title : '',
    },
    relation : [{
        type : 'HasOne',
        key : 'user',
        relatedModel : 'com.dw.attendance.model.User',
        reverseRelation : {
            key : 'posts'
        }
    },{
        type : 'HasMany',
        key : 'comments',
        relatedModel : 'com.dw.attendance.model.Comment',
        reverseRelation : {
            key : 'post'
        }
    }]
});


Comment = Backbone.Relational.Model({
    defaults : {
        id : '',
        post : '',//model
        text : '',
        title : ''
    },
    relation : [{
        type : 'HasOne',
        key : 'post',
        relatedModel : 'com.dw.attendance.model.Post',
        reverseRelation : {
            key : 'comments'
        }
    }]
});

您的数据,对于用户:{id : 1, name : 'john', posts : [1,2,3]};

然后你可以得到任何用户帖子的评论,

user.get('posts').get('post_ID').get('comments');