2013-01-31 25 views
1

這是我的第一個使用骨幹和REST API的應用程序,在創建編輯時我對某些特定場景感到困惑。所以如果模型在服務器上退出,它將編輯,如果它不創建。在backbone.js中創建vs修改

當我在模型中傳遞一個唯一標識符時,它知道它退出,但是如果我傳遞一個沒有唯一標識符的現有數據組合,它總是假定它應該創建。我不確定這是否應該在客戶端或服務器上解決。

例如:

var exportationMod = new Backbone.Model({ 'asset': '/api/v1/asset/'+this.assetID+'/', 'export_configuration': '/api/v1/exportconfiguration/'+this.model.get('id')+'/' }); 
exportationMod.url = '/api/v1/exportation/'; 
exportationMod.save(); 

確定這樣的服務器和Django + tastypie運行。這應該由客戶通過首先在服務器上進行額外查詢來驗證(也許有設置像mysql這樣的唯一鍵組合的方法),還是有另一種設置可以調整,以便編輯而不是創建?

回答

0

如果您將數據傳遞給沒有某個唯一標識的服務器,服務器如何知道要更新哪些內容?

如果您的情況有意義,則可以在模型中覆蓋isNew()

var MyModel = Backbone.Model.extend({ 
    idAttribute: 'somethingUnique', 
    url: '/api/v1/exportation/', 
    isNew: function(){ 
     // return true if you want create (POST), 
     // return false if you want update (PUT) 
    } 
}); 

默認情況下,它看起來像這樣(與上面的模型,this.id將上述idAttribute值):

// A model is new if it has never been saved to the server, and lacks an id. 
isNew: function() { 
    return this.id == null; 
}, 

如果要編輯已經存在的服務器上的東西,在編輯/保存之前,您應該首先獲取它。另外,如果有一些不叫'id'的唯一ID,你可以在模型上覆蓋它(見上文)。