2013-08-16 46 views
1

我在數據庫中有一個集合(一個對象列表)。我可以取它:collectionModel.fetch() 但是,然後用戶改變了該集合的東西。當用戶點擊保存按鈕時,整個收藏列表必須在數據庫中更新。我想也許我可以delete()第一個老,然後create()它與新的但我不能達到它。我不能使用update()方法,因爲在這種情況下,我應該找到哪些集合元素已更改,但我想更新整個列表。我怎樣才能做到這一點?感謝幫助。如何更新數據庫中的整個Backbone.js集合?

回答

4

你有在該數據庫前的REST API?這就是Backbone如何與之合作。當您的JavaScript代碼運行model.save();時,會向您的api發出PUT請求。

你的問題是關於保存整個集合,因爲如果你想保留在骨幹的默認實現中,你將不得不瀏覽集合中的所有模型併爲它們中的每一個調用保存。

如果您想向您的服務器發出一個請求,您將必須在您的集合中實現自定義方法。例如:

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到您的服務器。

同樣,如果您想讓Backbone的生活變得輕鬆,您希望在服務器端擁有RESTful API。

0

如果你想重置集合,你必須指定「重置」屬性。

collectionList.fetch({ 
    reset: true, 

    ... 
}); 

但我覺得這是更好地剛剛更新:

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

    ... 
}); 
+0

我想在數據庫中更新它只是提取舊的 – Ozg