【问题标题】:backbonejs - fetching multiple model主干js - 获取多个模型
【发布时间】:2013-07-06 04:31:04
【问题描述】:

我是backbonejs 的新手,我正在做一些项目,包括获取和显示朋友列表。对于这个项目,我使用 parse.com 作为数据库。但我现在有货了。

例如:我在用户和朋友模型中有以下数据。

var user = [
{
    id: 'x1',
    firstname: 'Ashik',
    lastname: 'shrestha',
    phone: '12321321',
    mobile: '123213',
    email: 'xyz@gmail.com'
},
{
    id: 'x2',
    firstname: 'rokesh',
    lastname: 'shrestha',
    phone: '12321321',
    mobile: '123213',
    email: 'rokesh@gmail.com'
},
];

var friends = [
{
    user_id: 'x1',
    user_friend_id: 'x2'
},
{
    user_id: 'x1',
    user_friend_id: 'x4'
},
{
    user_id: 'x1',
    user_friend_id: 'x10'
},
{
    user_id: 'x2',
    user_friend_id: 'x25'
}

];

// 集合

var userCollection = Backbone.collection.extend({
model: user
});

var friendListCollection = Backbone.collection.extend({
model: friends
});

var friends = new friendListCollection();

现在我想要什么?

当我获取好友集合对象时,我想获取用户的好友列表及其详细信息。

例子::

 friends.fetch({
success: function(ob){
    var ob =ob.toJSON(); 
    // i want ob to be like 
    [

        {
            id: 'x2',
            firstname: 'rokesh',
            lastname: 'shrestha',
            phone: '12321321',
            mobile: '123213',
            email: 'rokesh@gmail.com'
        },
        {
            id: 'x4',
            firstname: 'rokesh',
            lastname: 'shrestha',
            phone: '12321321',
            mobile: '123213',
            email: 'rokesh@gmail.com'
        },
        {
            id: 'xx10',
            firstname: 'rokesh',
            lastname: 'shrestha',
            phone: '12321321',
            mobile: '123213',
            email: 'rokesh@gmail.com'
        },
    ]
    }
});

我应该创建新的集合来关联它们还是有其他方法可以做到这一点??

提前致谢!

【问题讨论】:

    标签: backbone.js backbone-relational backbone.js-collections backbone-model


    【解决方案1】:

    为了使用最少的服务器请求来获得更好的性能和更少的服务器端压力,我建议您在服务器端而不是在客户端添加此逻辑。例如使用?detail=true等参数获取时,服务器返回简单信息和详细数据,否则只返回简单信息。

    如果您有充分的理由将它们分成不同的Collections,那么您必须获取这些集合。

    【讨论】:

      【解决方案2】:

      假设您不希望更改数据结构,您可以使用 BackboneJS 模型的 idAttribute 属性,通过特定键(通常是“id”)从集合中检索特定模型。

      在定义模型时,您还应该为模型定义 idAttribute,稍后您可以通过该字段的值从集合中访问它。

      当 Backbone 集合同步时,所有模型都根据其定义的结构进行解析,在其数据之上添加管理功能。

      考虑以下示例:

      var myModel = Backbone.Model.extend({
        idAttribute: "id"
        ...
      });
      
      var myCollection = Backbone.Collection.extend({
        model: myModel
        ...
      });
      

      一旦 myCollection 拥有一个或多个“myModel”,您就可以简单地使用以下内容:

      var myModelFromMyCollection = myCollection.get(id);
      

      模型的 idAttribute 可以通过模型的任何字段...

      对于您的用例,假设friendListCollection 和userCollection 都已经可用并且其中有模型,请考虑使用以下代码从其用户模型中获取每个朋友的完整详细信息,如下所示:

        friendListCollection.each(function(friendModel) {
           var friendFullDetailsFromUsersCollection = userCollection.get(friendModel.id);
           console.log(friendFullDetailsFromUsersCollection);
           ...
        });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-14
        • 1970-01-01
        相关资源
        最近更新 更多