这是我的第一个使用骨干和REST API的应用程序,在创建编辑方面,我对某些特定场景感到困惑。因此,如果模型退出服务器,它将编辑,如果它不是它创建。
当我在模型中传递一个唯一标识符时,它知道它会退出,但是如果我传递现有数据的组合而没有唯一标识符,它总是认为它应该是CREATE。我不确定这是否应该在客户端或服务器上解决。
例如:
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这样的唯一键的组合),还是有其他设置我可以进行调整以便编辑而不是创建? / p>
答案 0 :(得分:0)
如果您将数据传递给没有唯一ID的服务器,服务器将如何知道要更新的内容?
如果您的情况有意义,可以覆盖模型中的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,您也可以在模型上覆盖它(见上文)。