1

Я новичок в backbonejs, и я делаю проект, который включает в себя выборку и отображение списка друзей. для этого проекта я использую parse.com как базу данных. но на данный момент я запатентован.backbonejs - выборка нескольких моделей

например: у меня есть следующие данные в моделях пользователей и друзей.

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

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: '[email protected]' 
     }, 
     { 
      id: 'x4', 
      firstname: 'rokesh', 
      lastname: 'shrestha', 
      phone: '12321321', 
      mobile: '123213', 
      email: '[email protected]' 
     }, 
     { 
      id: 'xx10', 
      firstname: 'rokesh', 
      lastname: 'shrestha', 
      phone: '12321321', 
      mobile: '123213', 
      email: '[email protected]' 
     }, 
    ] 
    } 
}); 

я должен создать новую коллекцию, чтобы связать их и есть ли другой способ сделать это ??

Заранее благодарен!

ответ

0

Чтобы использовать наименьшее количество запросов на сервер, чтобы получить лучшую производительность и меньшую защиту на стороне сервера, я бы предложил вам добавить эту логику на стороне сервера, а не на стороне клиента. например При выборе параметров, таких как ?detail=true, сервер затем возвращает простые данные с подробными данными, в противном случае возвращает только простую информацию.

Если у вас есть веская причина, чтобы разделить их на разные Collection с, вы должны получить эти коллекции.

0

Предполагая, что вы не хотите изменять свою структуру данных, вы можете использовать свойство idAttribute модели BackboneJS, чтобы получить определенную модель из коллекции по определенному ключу, обычно это «id».

Когда вы определяете свою модель, вы также должны определить идентификатор idAttribute для модели, которая позже позволит вам получить к ней доступ из коллекции по значению этого поля.

Когда синхронизация Синхронизируется с базой данных, все модели анализируются в соответствии с их определенной структурой, добавляя административную функциональность поверх своих данных.

Рассмотрим следующий пример:

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

var myCollection = Backbone.Collection.extend({ 
    model: myModel 
    ... 
}); 

После MyCollection имеет еще одну или "MyModel" (ы) вы можете просто использовать следующее:

var myModelFromMyCollection = myCollection.get(id); 

idAttribute модели может по любой из полей модели ...

Для вашего варианта использования можно предположить, что и friendListCollection, и userCollection уже доступны и имеют в них модели, рассмотрим следующие c ода, чтобы получить полную информацию о каждом другом из его пользовательской модели:

friendListCollection.each(function(friendModel) { 
    var friendFullDetailsFromUsersCollection = userCollection.get(friendModel.id); 
    console.log(friendFullDetailsFromUsersCollection); 
    ... 
    }); 
Смежные вопросы