Любые рекомендации для глубоких структур данных с помощью Backbone?

Я столкнулся с головной болью с помощью Backbone. У меня есть коллекция указанных записей, у которых есть субректоры, например: у хирургов есть запланированные процедуры, процедуры имеют оборудование, у какого-то оборудования есть потребляемые потребности (газы, жидкости и т.д.). Если у меня есть хирург-каркас, то у каждого хирурга есть модель, но его процедуры и оборудование и расходные материалы станут очевидными массивами и объектами Javascript после их распаковки из JSON.

Я полагаю, что в SurgeonsCollection я могу использовать parse() для создания новых ProcessCollections и, в свою очередь, создавать новые EquipmentCollections, но через некоторое время это превращается в шарик. Чтобы сделать его разумным на стороне сервера, есть единственная точка контакта, которая берет одного хирурга и его вещи как POST - поэтому распространение "набора" на Расходуемой модели автоматически, чтобы вызвать "сохранение" вниз по иерархии, также делает весь иерархический подход нечеткая.

Кто-нибудь еще сталкивался с такой проблемой? Как вы его решили?

Ответ 1

Это может быть полезно в вашем случае: https://github.com/PaulUithol/Backbone-relational

Вы задаете отношения 1:1, 1: n, n: n и соответственно обрабатываете JSON. Он также создает глобальный магазин для отслеживания всех записей.

Ответ 2

Итак, один из способов решения этой проблемы - сделать следующее:

  • Пусть все модели наследуются от настраиваемого BaseModel и помещают в BaseModel следующую функцию:

        convertToModel: function(dataType, modelType) {
            if (this.get(dataType)) {
                var map = { };
                map[dataType] = new modelType(this.get(dataType));
                this.set(map);
            }
        }
    
  • Переопределите Backbone.sync и сначала разрешите сериализацию модели, как обычно:

    model.set(response, {silent: true});

  • Затем проверьте, имеет ли модель функцию onUpdate:

                if (model.onUpdate) {
                    model.onUpdate();
                }
    
  • Затем, всякий раз, когда у вас есть модель, которую вы хотите сгенерировать подмодели и подколлекции, реализуйте onUpdate в модели с чем-то вроде этого:

            onUpdate: function() {
                this.convertToModel('nameOfAttribute1', SomeCustomModel1);
                this.convertToModel('nameOfAttribute2', SomeCustomModel2);
            }
    

Ответ 3

Я бы выделил разных хирургов, процедур, оборудования и т.д. как разные ресурсы в вашем веб-сервисе. Если вам нужно только обновить оборудование для конкретной процедуры, вы можете обновить эту процедуру.

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