2013-08-16 2 views
1

У меня есть коллекция (список объектов) в базе данных. Я могу получить его как: collectionModel.fetch() Но тогда пользователь меняет что-то в этой коллекции. Когда пользователь нажимает кнопку сохранения, весь список коллекции должен обновляться в базе данных. Я подумал, может быть, я смогу delete() старый, а затем create() он с новым, но я мог бы его достичь. Я не могу использовать метод update(), потому что в этом случае я должен найти, какие элементы коллекции были изменены, но я хочу обновить весь список. Как я могу это сделать? Спасибо за помощь.Как обновить всю коллекцию Backbone.js, которая находится в базе данных?

ответ

4

У вас есть REST API перед этой базе данных? Вот как работает Backbone для работы. Когда код JavaScript запускается model.save();, для вашей модели API выполняется запрос PUT.

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

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

MyCollection = Backbone.Collection.extend({ 
    saveAll: function() { 
     var data = this.toJSON(); 
     return Backbone.$.ajax({ 
      data: { objects: data }, 
      url: '/url/in/your/server/to/update/db' 
     }); 
    } 
}); 

Это собирается отправить массив всех моделей в вашей коллекции, преобразованный в JSON на ваш сервер.

Опять же, вы хотите иметь RESTful API на стороне сервера, если вы хотите сделать свою жизнь с Backbone легкой.

0

Если вы хотите сбросить сбор, вам необходимо указать атрибут «reset».

collectionList.fetch({ 
    reset: true, 

    ... 
}); 

Но я думаю, что лучше просто обновить его:

collectionList.fetch({ 
    remove: false, 
    update: true, 
    merge: true, 

    ... 
}); 
+0

Я хочу обновить в базе данных, он просто извлекает старый – Ozg

Смежные вопросы