Добавление метода ИСПРАВЛЕНИЯ в базовые коллекции

#backbone.js #tastypie

#backbone.js #типичный

Вопрос:

У меня есть веб-приложение, которое использует серверную часть Django / Tastypie с интерфейсом Backbone / Marionette. Я хотел бы использовать массовые операции Tastypie для создания нескольких объектов через мой API с использованием запроса ИСПРАВЛЕНИЯ к конечной точке списка.

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

Ответ №1:

Отhttp://backbonejs.org /

    If instead, you'd only like the changed attributes to be sent to the server, call 
   model.save(attrs, {patch: true}). You'll get an HTTP PATCH request to the server
   with just the passed-in attributes.
  

Скрипка Отправляет запрос на исправление при синхронизации магистральной коллекции:

 $(function() {

  Backbone.$ = $;

  var User = Backbone.Model.extend({
    urlRoot: "/testUrl",
    isNew : function () { return false; },
    defaults: {
        name: 'John Doe',
        age: 25
    }
  });
  var user1 = new User();
  var user2 = new User();
  var user3 = new User();
  var user4 = new User();
  var UserCollection = Backbone.Collection.extend({
    model: User,
    url: "/testUrl"
  });
  var userCollection = new UserCollection([ user1, user2, user3]);
  // update
  user1.set('name','Jane Doe');
  user4.set('name','Another User');

  // delete
  userCollection.remove(user2);

  // add
  userCollection.add(user4);

  userCollection.sync('patch', userCollection , { error: function () {                       
    console.log(userCollection); } });
  });
  

Комментарии:

1. Я говорю о коллекциях, а не о моделях. Базовые коллекции не имеют готового метода сохранения.

2. Я не был полностью осведомлен о параметрах, доступных через аргументы Backbone.sync. Мне это нравится! Я попробую это сделать и сообщу об этом. Спасибо!

3. Мне все еще нужно изменить объект Backbone.sync, чтобы соответствовать ожиданиям Tastypie для запроса ИСПРАВЛЕНИЯ к конечной точке списка. В частности, приведенные здесь ожидания: django-tastypie.readthedocs.org/en/latest /…

4. @Erik кажется таким после прочтения вашей ссылки. Я больше сосредоточился на стороне backbone. Я не уверен, но github.com/PaulUithol/backbone-tastypie может оказаться полезным.

5. В итоге я использовал пользовательский запрос Backbone.ajax к конечной точке списка, чтобы отправить запрос на ИСПРАВЛЕНИЕ в формате, приемлемом для Tastypie. Размещение коллекции. fetch() в хэше успеха вызова ajax, похоже, помогает мне двигаться дальше. Спасибо за вашу помощь!