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"},
]