2013-01-31 27 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,你可以在模型上覆盖它(见上文)。