主干木偶相关模型



我正在尝试列出一些与他们相关的用户的帖子。每篇文章都有一个标题,一些文本和一个userId,像这样:

[{
   "userId": 1,
   "id": 1,
   "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
   "text": "quia et suscipitnsuscipit recusandae consequuntur expedita et cumnreprehenderit molestiae ut ut quas totamnnostrum rerum est autem sunt rem eveniet architecto"
    }]

如何将帖子模型与用户模型关联起来?它的工作原理就像我下面试过的一样,但它又快又脏。我需要使用主干关系吗?我只是不知道在我的应用程序中,对于一个1,2 -many关系来说,主干关系是否太过了。

var fetchingPosts = BackboneApplication.request("post:entities");
var postsListLayout = new List.Layout();
$.when(fetchingPosts).done(function(posts){
        $.each(posts.models, function(i, post){
            var username  = BackboneApplication.request("user:entity", post.get("userId"));
            $.when(username).done(function(user){
                post.set("name",user.get("name"));
            });
        });
     var contactsListView = new List.Posts({
      collection: posts
});

编辑由于这个问题,我的帖子模型看起来像这样:

Entities.Post = Backbone.Model.extend({
    url : "url_to_rest_api",
    idAttribute : 'id'
});

EDIT 2:这是以下解析函数可能的事实,我不能改变我的rest api。

parse: function(response) {
    user  = BackboneApplication.request("user:entity", response.userId)
    this.user = new User(user);
    return response'
}

一个选择是让你的posts服务返回完全加载的"Post"模型,如下所示:

[{
   //not just an id anymore
   "user": {"id":1, "username":"Fred", "email":"bob@bob.com"},
   "id": 1,
   "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
   "text": "quia et suscipitnsuscipit recusandae consequuntur expedita et     cumnreprehenderit molestiae ut ut quas totamnnostrum rerum est autem sunt rem eveniet   architecto"
}]

然后在你的Post模型的解析方法中,你可以做以下事情:

parse: function(response) {
    //convert raw user json to backbone model
    response.user = new User(response.user);
    return response'
}

这避免了关系依赖,但要求rest端点用所有post数据加载用户数据。你可以让你的端点是特定的但让你的服务层是通用的所以post和user的概念仍然是松散耦合的

//pseudo
def getPost(id) {
   def post = postService.getPost(id);
   post.user = userService.getUser(post.userid)
   render post as json
}

相关内容

  • 没有找到相关文章

最新更新