Backbone.js 主干关系:如何建立关系集合和模型?

Backbone.js 主干关系:如何建立关系集合和模型?,backbone.js,backbone-relational,Backbone.js,Backbone Relational,我有以下情况,我认为最好的处理方法是使用主干关系 如果有其他解决方案,请纠正我 我有一个系列(1)和一个型号(2)。 收集结果如(3)所示,模型结果如(4)所示 最后,视图应该是这样的(5) 我的问题是: 1) 是否可以使用主干关系处理此情况? 2) 如果是,我应该如何重写FeedsCollection以自动从UserModel获取所需数据 (一) (二) (3) 饲料收集结果 //feedsCollection.toJSON(); [ {id:1, message: "some

我有以下情况,我认为最好的处理方法是使用
主干关系

如果有其他解决方案,请纠正我

我有一个系列(1)和一个型号(2)。
收集结果如(3)所示,模型结果如(4)所示

最后,视图应该是这样的(5)

我的问题是:
1) 是否可以使用主干关系处理此情况?
2) 如果是,我应该如何重写
FeedsCollection
以自动从
UserModel
获取所需数据


(一)


(二)


(3) 饲料收集结果

//feedsCollection.toJSON(); 

[
   {id:1, message: "something one", creator_id: 100},
   {id:2, message: "something two", creator_id: 101},
]

(4) 用户模型结果

userModel = new UserModel({id: 100});
userModel.fetch();
userModel.toJSON(); // {id:100, name: "jhon"}

userModel = new UserModel({id: 101});
userModel.fetch();
userModel.toJSON(); // {id:101, name: "herry"}

(5) 最后,视图结果应该如下所示:

[
    {message: "something one", creator_id: 100, name: "jhon"},
    {message: "something two", creator_id: 101, name: "herry"},
]

您是否考虑过直接从服务器返回用户名。 因此url“/feeds”将返回:

[
    {message: "something one", creator_id: 100, name: "jhon"},
    {message: "something two", creator_id: 101, name: "herry"},
]
如果您只想在消息附近显示用户名,这似乎是一个简单的解决方案。我不知道你的服务器的后端是什么,但我相信这可以有效地完成

因此,回答您的问题:

1) 可以使用主干关系来处理这种情况吗

也许你可以用这个插件来解决这个问题,但是我不建议你引入一个插件来解决这个具体的例子。在我看来,仅仅为了显示用户模型的名称而查询服务器似乎效率低下。但是,在不同的情况下,这可能是合适的

无论如何,如果您决定加载带有插件或不带插件的用户模型。你必须问一些问题,看看这是否值得:

  • 这将生成多少查询?每个用户一个可能太多了
  • 如果您使用一个请求加载所有用户模型,服务器将返回多少个用户模型?所有的用户可能都太多了。因此,您只需要加载所需的
  • 服务器将返回多少数据?你真的需要所有用户的属性吗

  • 因此,总而言之,我仍然认为您可以直接从服务器返回用户名,并且仅当您需要更多的用户名时才加载特定的用户模型。

    var UserModel=Backbone.model.extend({}),而不是FeedsCollection?我对FeedsCollection与UserModel之间的关系感到困惑?它们是否基于财产创建者id相关?@TyroneMichael,谢谢你的评论,我确实更正了(2),是的,它们通过
    创建者id相关
    feedscolection.creator_id=userModel.id
    这是一对多|多对一关系还是多对多关系?(例如,用户是否可以有多个提要,提要是否可以有多个用户?)
    [
        {message: "something one", creator_id: 100, name: "jhon"},
        {message: "something two", creator_id: 101, name: "herry"},
    ]
    
    [
        {message: "something one", creator_id: 100, name: "jhon"},
        {message: "something two", creator_id: 101, name: "herry"},
    ]